Node.js collection을 찾지 못하는 에러 - TypeError: Cannot read properties of undefined (reading 'collection')

ouneno·2023년 8월 11일
0

Node.js

목록 보기
6/7
post-thumbnail

세부사항들 뜯어보려고 이래저래 수정하는 도중에 MongoDB의 collection을 불러오지 못하는 에러가 발생했다.

▼ ❗️ 로그인할때도

▼ ❗️ 회원가입할때도

▼ 에러내용


에러내용은 즉슨 이렇다. collection을 찾을 수 없다
TypeError: Cannot read properties of undefined (reading 'collection')

해당 프로젝트에서 db에 접근할 때마다 db.collection('콜렉션DB명') 으로 불러왔었기에 MongoDB와 커넥트 부분에 db라는 변수로 할당해 놓은 부분이 문제였지 않았을까 싶었다.

server.js 코드를 한번 살펴보자

const express = require('express');
const app = express();
const MongoClient = require('mongodb').MongoClient;
require('dotenv').config();

// DB connection - .env파일에 정보담겨있음
const id = process.env.DB_ID;
const pw = process.env.DB_PW;
const cluster = process.env.DB_CLUSTER;
const serverPort = process.env.SERVER_PORT;
const db_url = "mongodb+srv://" + id + ":" + pw + "@" + cluster + ".j22z1ok.mongodb.net/플젝명?retryWrites=true&w=majority"

MongoClient.connect(db_url, { useUnifiedTopology: true }, function (err, client) {
  if(err) {
    return console.log(err);
  } else {
    app.listen(server_port, ()=>{
      global.db = client.db('플젝명');
      console.log('<<<<< listening on server >>>>>')
    });
  }
});

db_url쪽엔 아무런 문제가 없었다. 오타도 없었고, 수정할 일도 없었고.
하단에 살펴보면 connect할 때 error가 뜰 경우 콘솔창에 에러를 출력했고, 정상적으로 연결이 되었다면 서버포트와 연결하는 부분을 적어놨다.

global.db = client.db(''); ❓

여길 자세히 보자니 global.db = client.db('');
db를 다른 곳에서도 사용하기 위해 global.db로는 설정했다지만 가장 기본으로 사용하는 db를 지정을 안해놨었다.
(사실 global만 적어놓으면 전역에서 다 되는줄...)

const express = require('express');
const app = express();
const MongoClient = require('mongodb').MongoClient;
require('dotenv').config();

// DB connection - .env파일에 정보담겨있음
const id = process.env.DB_ID;
const pw = process.env.DB_PW;
const cluster = process.env.DB_CLUSTER;
const serverPort = process.env.SERVER_PORT;
const db_url = "mongodb+srv://" + id + ":" + pw + "@" + cluster + ".j22z1ok.mongodb.net/플젝명?retryWrites=true&w=majority"

MongoClient.connect(db_url, { useUnifiedTopology: true }, function (err, client) {
  if(err) {
    return console.log(err);
  } else {
    app.listen(server_port, ()=>{
      ⭐️db = client.db('플젝명');⭐️
      global.db = client.db('플젝명');
      console.log('<<<<< listening on server >>>>>')
    });
  }
});

db = client.db(''); 를 추가했더니 아무 문제 없이 정상작동하는 것을 확인했다.

profile
지속적인 성장을 추구하는 새싹 개발자입니다🌱

0개의 댓글