몽구스는 몽고디비 작업을 쉽게 할 수 있도록 도와주는 라이브러리이다. 다큐먼트를 사용하므로 ODM(Object Document Mapping)이라고 불린다. 몽고디비에 없는 점들을 보완해 자바스크립트 객체와 몽고디비를 매핑해준다.
스키마 : 몽고디비에 데이터를 넣기 전 노드 서버 단에서 데이터를 한 번 필터링한다. 사용자의 실수를 커버해준다.
JOIN 기능 보안 : MySQL의 JOIN 기능을 populate 메서드로 보완하여 관계가 있는 데이터를 보다 쉽게 가져올 수 있다.
{
"name": "learn-mongoose",
"version": "0.0.1",
"description": "몽구스를 배우자",
"scripts": {
"start": "nodemon app"
},
"author": "ZeroCho",
"license": "MIT"
}
const mongoose = require('mongoose')
const connect = () => {
if (process.env.NODE_ENV !== 'production') {
mongoose.set('debug', true)
}
개발 환경일 때만 콘솔을 통해 몽구스가 생성하는 쿼리 내용을 확인할 수 있게 한다.
mongoose.connect('mongodb://이름:비밀번호@localhost:27017//admin', {
dbName: 'nodejs',
useNewUrlParser: true,
useCreateIndex: true,
}, (error) => {
if (error) {
console.log('몽고디비 연결 에러', error)
} else {
console.log('몽고디비 연결 성공')
}
})
}
몽구스와 몽고디비를 연결한다. 몽고디비의 주소로 접속을 하며, 주소의 데이터베이스는 admin, 실제 사용하는 데이터베이스는 nodejs이므로 dbName을 사용하여 nodejs를 사용하게 한다.
마지막 콜백 함수로 연결 여부를 확인한다.
mongoose.connection.on('error', (error) => {
console.error('몽고디비 연결 에러', error)
})
mongoose.connection.on('disconnected', () => {
console.error('몽고디비 연결이 끊겼습니다. 연결을 재시도합니다.')
connect()
})
module.exports = connect
에러 발생 시 에러 내용을 기록하고, 연결 종료 시 재연결을 시도하는 코드이다.