본문 바로가기
리액트(React)

mongoose의 설치 및 적용

by 즐거운코딩 2023. 7. 9.
반응형

mongoose는 Node.js 환경에서 사용하는 MongoDB 기반 ODM(Object Data Modeling) 라이브러리 입니다.

이 라이브러리는 데이터베이스 문서들을 자바스크립트 객체처럼 사용할 수 있게 해줍니다.

mongoose

이전의 블로그 만들기를 이어서 진행합니다.

 

$ yarn add mongoose dotenv

 

dotenv는 환경변수들을 파일에 넣고 사용할 수 있게 하는 개발 도구입니다.

mongoose를 사용하여 MongoDB에 접속할 때 서버에 주소나 계정 및 비밀번호가 필요할 수 있는데 이렇게 민감한 값은 코드안에 직접 작성하지 않고 환경변수로 설정하는 것을 추천합니다.

프로젝트를 GitHub, GitLab 등의 서비스에서 관리할 경우 .gitignore 에 환경변수 파일을 등록하여 GitHub에 올리지 않도록 합니다.

 

.env 환경변수 파일 생성

환경변수에는  서버에서 사용할 포트와 MongoDB 주소를 넣어 줍니다. 프로젝트의 루트에 .env 파일을 다음과 같이 만듭니다.

PORT=4000
MONGO_URI=mongodb://localhost:27017/blog

여기서 blog는 데이터베이스 이름입니다. 지정한 데이터베이스가 서버에 없으면 자동으로 만들어 주므로 사전에 직접 생성할 필요는 없습니다.

 

src/index.js 파일의 맨 위에 dotenv를 불러와서 config() 함수를 호출합니다.

Node.js에서 환경변수는 process.env 값을 통해 조회합니다.

require('dotenv').config();
const Koa = require('koa');
const Router = require('koa-router');
const bodyParser = require('koa-bodyparser');

// 비구조화 할당을 통해 process.env 내부 값에 대한 레퍼런스 만들기
const { port } = process.env;

const api = require('./api');

const app = new Koa();
const router = new Router();

// 라우터 설정
router.use('/api', api.routes()); // api 라우트 적용

// 라우터 적용 전에 bodyparser 적용
app.use(bodyParser());

// app 인스턴스에 라우터 적용
app.use(router.routes()).use(router.allowedMethods());

// PORT가 지정되어 있지 않다면 4000을 사용
const port = PORT || 4000;
app.listen(port, () => {
  console.log('Listening to port %d', port);
});

.env 파일에서 PORT를 4001번으로 변경한 뒤 서버를 재시작 해 봅니다.

.env 파일을 변경할 때는 nodemon에서 자동으로 재시작하지 않으므로 직접 재시작해야 합니다.

다시 .env 파일에서 PORT를 4000번으로 변경하고 저장합니다.

 

mongoose로 서버와 데이터베이스 연결

 

연결할 때는 mongoose의 connet 함수를 사용합니다.

require('dotenv').config();
const Koa = require('koa');
const Router = require('koa-router');
const bodyParser = require('koa-bodyparser');
const mongoose = require('mongoose');

const api = require('./api');

// 비구조화 할당을 통해 process.env 내부 값에 대한 레퍼런스 만들기
const { PORT, MONGO_URI } = process.env;

mongoose
  .connect(MONGO_URI)
  .then(() => {
    console.log('Connected to MongoDB');
  })
  .catch((e) => {
    console.error(e);
  });

(...)

코드를 저장한 뒤 yarn start:dev 로 다시 서버를 재시작 합니다.

다음과 같이 터미널에 출력되면 데이터베이스에 성공적으로 연결된 것 입니다.

 

반응형