디지털 너구리 : 게임, IT 정보 및 다양한 지식 공유드립니다.

요즘 firebase로 커뮤니티 포럼을 개발하고 있다. 여러차례 개발하는 것이 실력향상에 도움이 될것이라 생각된다. 많은 오류가 발생하였고 그 중 좀 오래 걸려 해결한 문제들을 짧게나마 정리하려고 한다.









firebase로 웹개발을 진행중에 예기치 못한 오류가 발생하였다. firebase 데이터베이스를 모듈화 컨트롤 파일에 매개변수로 넘긴후 잘 넘겨졌나 console.log를 통해 확인하려고 하는데 [object object]라고 나온것이다. 


당연히 나로서는 데이터가 매개변수로 잘 넘어가지 않았다라고 판단할 수 밖에 없었다. 하지만 확인한 결과 인증 및 데이터가 넘어온 것에 문제가 없었다. 깃허브나 스택 오버플로우에 수차례 검색한 결과 아주 단순한 문제였음을 깨닫는다. 문제 원인을 알고나서 너무 허탈했다.



1
2
3
4
5
// firebase 데이터베이스 
let db = admin.firestore();
 
app.use('/',router);
route_loader.init(app, router,db);
cs


먼저 서버 메인 소스 코드인 "index.js"이다. 내용과 같이 firestore와 연동된 객체를 db 변수에 넣고 이를 route_loader.init에 넘긴다.



1
2
3
4
5
6
7
route_loader.init = function(app, router,db) {
    console.log('route_loader.init 호출됨.');
  console.log('db는 ' + db);
    board.board_init(db);
 
    return initRoutes(app, router);
};

cs


그리고 모듈화 컨트롤 소스 코드인 "route_loader"이다. 보는것과 같이 넘겨받은 db를 확인하기 위해 console.log로 출력하고 있다. 하지만 여기서 [object object]라는 오류가 뜬 것이다. 


정말 간단하게 해결하였는데 문제는 console.log안 'db'라는 문자열과 객체 타입을 + 연산을 통해 출력하려고 한 것이다. 해결 방법으로는 반점으로 타입이 다르다는 것을 구분해주면된다.




1
2
3
4
5
6
7
8
route_loader.init = function(app, router,db) {
    console.log('route_loader.init 호출됨.');
    console.log("db는 : ",db);
 
    board.board_init(db);
 
    return initRoutes(app, router);
};
cs


위와 같이 그냥 반점으로 구분하면 문제없이 로그가 출력되는 것을 볼 수 있다. 이 문제를 해결하고 나서 역시 기본이 가장 중요하다는것을 깨달았다. 좀 더 완벽하게 기본을 숙지해야겠다.

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band