TIL WIL

2022_10_07

문종현 2022. 10. 7. 15:03

스키마의 index 부터가 너무 다르잖아

 

내가 사용한 코드

const mongoose = require("mongoose"); // 몽구스 라이브러리 가져오기

const connect = () => {
  mongoose
    //.connect("mongodb:// ", { useNewUrlParser: true }) 
    .connect("mongodb:// ", { useNewUrlParser: true }) 
    .catch(err => console.log(err)); // 에러가 발생하면 콘솔에 에러 찍어줘
};

mongoose.connection.on("error", err => {
  console.error("몽고디비 연결 에러", err);
});

module.exports = connect;

 

const mongoose = require("mongoose");

const connect = () => {
  const id = 'XXXX';
  const password = 'XXXX';
  const dbName = 'XXXX';
  const uri = `mongodb+srv://${id}:${password}@cluster0.XXXXXXX.mongodb.net/${dbName}?retryWrites=true&w=majority`;
  mongoose.connect(
    uri,
    {
      useNewUrlParser: true,
      ignoreUndefined: true,
      useUnifiedTopology: true,
    },
    (error) => {
      if (error) console.log("Mongo DB Connect Error");
      else console.log("Mongo Db Connect Success");
    }
  );
};

// 몽구스 Connection에 이벤트 리스너를 삽입
// 에러 발생 시 에러 내용을 기록
mongoose.connection.on("error", (err) => {
  console.error("Mongo DB Connect Error", err);
});

// 연결 종료 시 재연결을 시도한다.
mongoose.connection.on('disconnected', () => {
  console.error("Mongo Db DisConnect. reconnect.");
  connect();
})

module.exports = connect;

 

moongoose.connect() 함수에 주렁주렁 옵션이 달린 것은 내게 시기상조라고 치더라도.

코드 가장 하단의 에러처리에 재연결 시도를 추가해 놓은 것은 눈여겨 보아야 한다.

 

또 저렇게 데이터 베이스 주소를 템플릿 리터럴로 만들어 놓으면 후에 id, password, 데이터베이스 이름만 바꿔가면 되니 참 편하지 않나.