NodeJS와 Express 및 MongoDB 연동에 대한 포스팅입니다
# NodeJS 프로젝트 생성
터미널을 실행한 후 아래와 같이 프로젝트를 생성해줍니다.
mkdir [생성할 프로젝트 폴더명]
cd [생성한 프로젝트 폴더명]
npm init -y // NodeJS 프로젝트 초기 설정
# 미들웨어 및 모듈 설치
npm i express mongoose morgan nodemon
저는 위와 같이 4개의 모듈을 설치해주겠습니다.
그럼 위 4개의 대한 모듈을 살펴볼까요.
1. express
Express는 NodeJS를 위한 빠르고 개방적인 간결한 웹 프레임워크입니다.
자세한 설명은 expressjs.com/ko/(새창열림) 를 참고하시기 바랍니다.
2. mongoose
이번 포스팅에서 핵심이 되는 모듈입니다.
NodeJS를 위한 MongoDB 객체 모델링을 도와주는 모듈이라고 볼수 있는데요.
캐스팅, 유효성검사, 쿼리작성, 비지니스 훅 작성을 도와줍니다
mongoose는 ODM (Object Document Mapper) 입니다
*객체지향 프로그래밍 언어와 데이터베이스를 호환되도록 하는
프로그래밍 기법인 ORM (Object Relational Mapper)이 있죠
쉽게 말하면,
MongoDB 객체모델링을 "자바스크립트"로 가능하게 도와주는 것이 mongoose입니다
3. morgan
NodeJS용 HTTP 요청 Logger 미들웨어 입니다.
요청이 들어왔을때 Logging 을 해주는 녀석입니다.
개발환경에서는 dev, short 포맷을 주로 사용하며
배포환경에서는 common 포맷을 사용합니다.
4. nodemon
nodemon은 NodeJS 프로젝트 내 파일변경을 스스로 감지하여
서버를 자동으로 재시작해주는 도구 입니다.
개발환경에서 많이 사용합니다.
# 서버설정하기
프로젝트 Root 폴더 내, server.js 파일을 생성한 후 아래와 같이 작성해줍니다
const express = require('express')
const app = express()
const port = 3000
const mongoose = require('mongoose')
const morgan = require('morgan')
// morgan 사용
app.use(morgan('dev'))
// test를 위한 기본 라우팅 설정
app.get('/', (req, res) => {
res.send('NodeJs Server on')
})
app.listen(port, () => {
console.log(`Express server has Started on port ${port}`)
})
// mongoose 설정
mongoose.connect(
'mongodb:// 로 시작하는 몽고디비 URI',
{
useNewUrlParser: true,
useFindAndModify: false
}
)
const db = mongoose.connection
db.on('error', console.error)
db.once('open', () => {
console.log('Connected to mongodb Server')
})
위와 같이 서버설정을 끝내고 실행을 위한 설정을 해줍니다.
프로젝트 폴더 내, package.json 파일을 오픈합니다.
"scripts" 부분을 수정해주겠습니다."scripts" 안에 "start" 스크립트를 작성해줍니다.
{
. // some code...
"scripts": {
"start": "nodemon server.js"
} // some code...
.
}
이렇게 작성하고 나면
앞으로 서버실행을 위한 터미널 명령어는 node server.js / nodemon server.js 가 아닌
npm start
위 명령어로 실행하시면 됩니다.
터미널에 npm start 명령어를 실행해보시면 express 서버와 mongodb server 가 잘 연결되었다고 나오게 됩니다.
이것으로 NodeJS(Express) & MongoDB 연동법에 대해서 알아보았습니다.
'Back > NodeJS' 카테고리의 다른 글
[NodeJS] PostgreSQL 데이터베이스 연동하기 (0) | 2020.05.29 |
---|
댓글