너무나도 초보자인 입장에서 너무나도 쉬운 오류지만 너무나도 모르겠는 오류였다.
Node.js로 MongoDB를 이용해서 로그인 서비스를 만드는 것이 이번 목표였기 때문에 일단 코드를 쭈욱 따라쓰고 이것저것 오타를 고치고 하다보니 최종단계에 도착해서 구동이 잘 되었다.
그런데 이상하게 로그인이 안되더라...
혹시나 해서 console.log()를 통해서 검색한 DB를 확인해보려고 했다.
가장 밑 줄이 로그인이 실패할 때의 DB 데이터의 상태인데 텅 비어있다. 처음에는 이제 연결이 안되거나 해서 그런줄 알고 DBconnection 부분을 확인하고 27017저게 무슨 포트 번호인가 싶어서 계속 찾아보고(알고보니 몽고 DB의 Default 포트 번호 같더라) 별 짓을 다하다가 DB를 다시 보게되었다.
보시다시피 DB에는 자료가 들어가있다. (절대 오타로 인해서 안나오는 것이 아니다...) 그런데 왜 안되지 싶어서 그제서야 책을 다시 보았다.
책의 내용 중 use local을 이용해서 local에 db를 저장하고 했었는데 혹시 여기서 데이터가 빠진건가 해서 들어가 보았다. 그 전에는 local진입은 생각도 하지 않았다.
그래서 들어와서 확인을 해보니 ??? DB가 비어있었다. 이제서야 깨달음을 얻는 것이다. 그냥 mongo를 통해 진입한후 아무 생각없이 db.users.insert(~~)를 해서 DB에 자료를 넣고 하려고 했는데 안된이유는 Node.js는 local이라는 컬렉션과 연결이 되어있었기 때문이다.
뭔가 느낌이 와서 데이터를 집어넣어 보았다.
이런 식으로 데이터를 집어넣었다. 저기의 id와 password가 db내에서 확인이 되면 docs라는 배열에 들어가며 그 배열의 숫자가 0이상이라면 로그인이 되는 방식이다.
아무튼 로그인을 해보니
이번에야 말로 성공했다.
NoSQL 그 중에서 MongoDB를 사용해보았다. 애초에 NoSQL 자체가 처음이라 동작 방식이 좀 특이했다. 책에서는 컬렉션을 테이블과 비슷한 개념이지만 다른점이 존재한다고 했는데 오늘 내가 고생한 일은 SQL에서 말하자면 FROM문을 무시하고 계속 데이터를 찾으려고 한 셈이다.
다만 NoSQL이 성능이 그렇게 좋다고하고 그리고 일단 책을 계속 진행해야하니 꾸준히 써야 할 것 같다.
결론 : MongoDB를 관리 할 때는 use (컬렉션 이름)을 통해서 처음에 명시를 하고 사용해야한다.
'공부 > Node.js' 카테고리의 다른 글
[Node.js] express로 웹 서버 만들기(use() 미들웨어) (0) | 2020.08.07 |
---|---|
[Node.js] 몽구스(Mongoose) (0) | 2020.07.28 |
[Node.js] MongoDB를 사용한 사용자 추가 (0) | 2020.07.28 |
[Node.js] body-parser관련 issue (0) | 2020.07.16 |
[Node.js] Buffer 관련 Warning (0) | 2020.07.15 |