➊ 개발 환경일 때만 콘솔을 통해 몽구스가 생성하는 쿼리 내용을 확인할 수 있게 하는 코드입니다.
➋ 몽구스와 몽고디비를 연결하는 부분입니다. 몽고디비 주소로 접속을 시도합니다. 비밀번호(nodejsbook 부분)를 자신의 비밀번호로 바꾸는 것을 잊지 마세요! 접속을 시도하는 주소의 데이터베이스는 admin이지만, 실제로 사용할 데이터베이스는 nodejs이므로 두 번째 인수로 dbName 옵션을 줘서 nodejs 데이터베이스를 사용하게 했습니다. 마지막 인수로 주어진 콜백 함수를 통해 연결 여부를 확인합니다.
useNewUrlParser: true는 입력하지 않아도 되지만 콘솔에 경고 메시지가 나타나므로 넣었습니다.
➌ 몽구스 커넥션에 이벤트 리스너를 달아뒀습니다. 에러 발생 시 에러 내용을 기록하고, 연결 종료 시 재연결을 시도합니다.
app.js를 만들고 schemas/index.js와 연결합니다.
app.js
const express = require('express');
const path = require('path');
const morgan = require('morgan');
const nunjucks = require('nunjucks');
const connect = require('./schemas');
const app = express();
app.set('port', process.env.PORT || 3002);
app.set('view engine', 'html');
nunjucks.configure('views', {
express: app,
watch: true,
});
connect();
app.use(morgan('dev'));
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use((req, res, next) => {
const error = new Error(`${req.method} ${req.url} 라우터가 없습니다.`);
error.status = 404;
next(error);
});
app.use((err, req, res, next) => {
res.locals.message = err.message;
res.locals.error = process.env.NODE_ENV !== 'production' ? err : {};
res.status(err.status || 500);
res.render('error');
});
app.listen(app.get('port'), () => {
console.log(app.get('port'), '번 포트에서 대기 중');
});