본문 바로가기

Database/Firebase (node.js) 게시판 만들기

Realtime DB 기반 게시판만들기

반응형

https://forest71.tistory.com/166

 

2. Firebase (Node.js) 게시판 만들기 - Realtime Database

앞서 생성한 firebaseExample 프로젝트에 간단한 게시판 기능을 구현하며 기초적인 Firebase(Realtime Database) 사용법을 정리한다. Node.js를 이용하여 Firebase의 Realtime Database에 데이터를 저장하고 조회..

forest71.tistory.com

차근차근 따라해보자.

 

1. Firebase 설치

2. app.js 파일에 문장추가

3. board1.js 만들기

4. dateformat 라이브러리 추가

5. boardList.ejs 만들기

6. boardForm.ejs 만들기

7. boardRead 만들기

8. boardDelete 만들기

 


 

6. boardForm에 게시글을 작성후 '저장'버튼을 누르니 에러메시지가 뜬다.

obj.hasOwnProperty is not a function
TypeError: obj.hasOwnProperty is not a function
    at each (C:\ionic\firebaseExample\node_modules\@firebase\database\dist\index.node.cjs.js:553:17)
    at validateFirebaseData (C:\ionic\firebaseExample\node_modules\@firebase\database\dist\index.node.cjs.js:1512:9)
    at validateFirebaseDataArg (C:\ionic\firebaseExample\node_modules\@firebase\database\dist\index.node.cjs.js:1470:5)
    at Reference.set (C:\ionic\firebaseExample\node_modules\@firebase\database\dist\index.node.cjs.js:13879:9)
    at C:\ionic\firebaseExample\routes\board1.js:92:56
    at Layer.handle [as handle_request] (C:\ionic\firebaseExample\node_modules\express\lib\router\layer.js:95:5)
    at next (C:\ionic\firebaseExample\node_modules\express\lib\router\route.js:137:13)
    at Route.dispatch (C:\ionic\firebaseExample\node_modules\express\lib\router\route.js:112:3)
    at Layer.handle [as handle_request] (C:\ionic\firebaseExample\node_modules\express\lib\router\layer.js:95:5)
    at C:\ionic\firebaseExample\node_modules\express\lib\router\index.js:281:22

댓글에 나와 같은 고민을 하는 분이 계셨다.

app.js 에서 app.use(express.urlencoded({ extended: false })); 를 true 로 하면 글이 잘 들어가지네요.
https://sjh836.tistory.com/154
**body-parser 모듈 (urlencoded, extended 옵션)**
-post로 요청된 body를 쉽게 추출할 수 있는 모듈이다. 추출된 결과는 request객체(IncomingMessage 타입)에 body 속성으로 저장된다.
-사용이 간편하다
-urlencoded() 에 아무 옵션을 주지 않는다면...
   nody-parser deprecated undefined extended: provide extended option 라고 뜬다.
  문서를 보면, .use(bodyParser.urlencoded({ extended: true or false })); 로 쓰라고 한다. 
   extended는 중첩된 객체표현을 허용할 지 말지를 정하는 것이다. 객체 안에 객체를 파싱할 수 있게 하려면 true 사용.

제법 그럴 듯 해 보이지만, 단순한 기능 구현에도 두 가지 문제가 나타났다.

1. 내림차순 정렬 안됨

2. 데이터 수정시 모든 필드를 나열해야 함

....

 

*Realtime Database는 단순한 정보를 저장하는 기능에 적합한 것 같고, 복잡한 데이터 처리에는 맞지 않는 것 같다.

다만, 이러한 문제들을 해결하기 위해 Cloud Firestore가 새로 나온 것 같다.




반응형