융융이'Blog

mongoDB와 Express연동하기 본문

2022이전/mongoDB

mongoDB와 Express연동하기

바로퇴장 2020. 1. 8. 17:21

mongoDB Cluster세팅

1. MongoDB(https://www.mongodb.com/)들어가서 로그인

2. New Project

- 프로젝트 이름

- 사용자 권한

- 지역설정 ...

- 보안 설정!( IP 허용 꼭 설정해줘야 합니다. Default로 허용 IP가 아무것도 없기 때문에 이 설정 안하시고 연동하면 Server connection rejection 에러가 뜹니다.!!

3. 컬렉션 만들기(User, Board, Comment, Like...등)

GUI 환경에서 간단하게 만들수 있습니다.

Express와 mongoDB의 연동

const { mongoDBurl } = require('../../../config/mongoDBconfig');
const MongoClient = require('mongodb').MongoClient;
const DATABASE_NAME = "dyeon";

//MongoDB 연결(useNewUrlParser: ?, useUnifiedTopolopy: ?)
const client = new MongoClient(mongoDBurl, { useNewUrlParser: true, useUnifiedTopology: true });
client.connect(err => {

    //사용하고자 하는 collection접속
  collection = client.db(DATABASE_NAME).collection('User');
  //해당 collection에 데이터 삽입(insert_value는 {email:"test@test.com", name:"user"} 형태이다.)
  //데이터를 삽입을 한다.
  collection.insertOne(insert_value, function(err, res){
    if (err) throw err;
    console.log("1 document inserted");
    client.close();
  });
});

connect 의 인자로 { useNewUrlParser: true } 를 적지 않으면 deprecatedError 가 발생한다.

{ useUnifiedTopology : true} 는 Enables the new unified topology layer를 의미한다.

App.js

...
// mongodb setup
const mongoose = require('mongoose');

//mongoDBurl은 mongoDB_cluster에 들어가서 확인하면 된다.
const promise = mongoose.connect(mongoDBurl, {
    useNewUrlParser: true, useUnifiedTopology: true
});

//연결확인해보자
const db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
    // we're connected!
    console.log('connected successfully');
});
...

위 mongoDB의 도큐와 다르게 mongoose를 사용했다는 점을 확인하자. App.js에서 server에서 mongoose를 연결을 하면 특별하게 mongoose.close()를 해주지 않는 이상 서버와의 연결은 유지 된다는 점이다.

MongoDB 와 mongoose의 차이점

MongoDB는 로우 레벨의 드라이버 역할을 하는 모듈이다.

mongoose는 ODB(Object Document Modeling)도구이다. 즉, 관계 모델링 툴이라 생각하면 된다.

이처럼 도큐에서는 MongoDB 드라이버를 사용하여 로우레벨에서 개발이 가능하도록 도큐를 제공하고 있다. 하지만, 다양한 기능과 데이터모델을 이용하기 위해서는 mongoose를 이용하여 개발을 하는 것이 편리하다. 또한 MongoDB 드라이버를 사용하게 되면 매번 connection을 확인하고 재접속을 해야되는 불편함이 있다. (코드가 매우 더러워진다.) 그리고 여기서 신기한 점은 mongoose의 드라이버와 MongoDB의 드라이버는 useUnifiedTopology: true 옵션값을 통하여 같은 소켓에서 데이터가 왔다갔다 할 수 있다는 점이다. 어째거나 mongoose를 이용하여 코드를 작성하자

참조 :

https://ohgyun.com/403

https://stackoverflow.com/questions/9232562/mongoose-vs-mongodb-nodejs-modules-extensions-which-better-and-why

참조 : https://velopert.com/594

'2022이전 > mongoDB' 카테고리의 다른 글

mongoDB 쿼리의 모든 것!  (1) 2020.01.12
mongoDB특징  (0) 2020.01.08