본문 바로가기

백엔드/노드제이에스

몽고디비 (MongoDB) 와 연결하기

반응형

몽고디비는 비관계형 데이터베이스로 사용법이 단순하여 노드제이에스 개발자들 사이에 인기가 많습니다. 오늘은 노드제이에스 서버와 몽고디비를 연결하는 방법을 보겠습니다. 

몽고디비에서 커넥션 스트링 가져오기

먼저, 몽고디비(https://cloud.mongodb.com/ )에서 해당 데이터베이스를 열고 'Connect'를 누릅니다.

열린 팝업에서 'MongoDB for VS Code'을 선택합니다.

3번에 커넥션 스트링 복사

애플리케이션에 연결하기

애플리케이션으로 이동하여 몽구스를 설치합니다.

npm i mongoose

서버파일로 이동하여 (주로 server.js 또는 app.js를 많이 사용) 아래와 같이 몽구스를 가져옵니다. 그리고 .connect()를 사용하여 연결하는데요. connect() 안에 매개변수로 아틀라스에서 복사한 connection string을 넣습니다.

// server.js

const mongoose = require('mongoose')
mongoose.connect('insertConnectionString').then(() => console.log('connected')).catch(() => console.log('failed'))

커넥션 스트링은 아래와 같은 형태를 가집니다. 꺽쇠 안에 표시된 부분은 실제 설정된 값으로 대체해 주어야 합니다.

// connection string original

mongodb+srv://test:<password>@test.fwefef.mongodb.net/

예를 들어, 비밀번호를 1234로 설정한 경우 아래와 같이 해당 비밀변호를 넣어 줍니다.

// connection string with password

mongodb+srv://test:1234@test.fwefef.mongodb.net/

해당 데이터베이스 하위에 컬렉션 (collection)을 설정도 가능한데요. 컬렉션은 데이터의 집합으로 관계형에서 테이블에 해당하는 다수의 다큐먼트를 가집니다.

// connection string with password and collection name

mongodb+srv://test:1234@test.fwefef.mongodb.net/<collectionName>

파일정리하기 (선택사항)

한 파일에 코드가 집중되는 것을 방지하여 가독성을 높이기 위해 데이터베이스 연결파일을 따로 분리하는 경우가 많은데요. 먼저 config라는 폴더를 생성하고 그 안에 몽고디비 구성파일을 생성합니다.

/* config/mongo-db.js */

const mongoose = require("mongoose");

exports.mongoDB = () => {
  mongoose
  .connect("mongodb+srv://test:1234@test.fwefef.mongodb.net/")
  .then(() => console.log("connected"))
  .catch(() => console.log("mongodb connection failed"));  
}

그리고 아래와 같이 서버파일에서 생성된 구성 파일을 가져와서 연결합니다.

/* server.js */

const express = require("express");
const app = express();
const { mongoDB } = require("./config/mongo-db");

// mongoDB
mongoDB();

※ 연결구문은 다양하므로 아래와 같이 연결도 가능합니다.

/* config/mongo-db.js */

const mongoose = require('mongoose')
mongoose.connect(
  process.env.MONG).then(() => console.log('connected'))
  .catch(() => console.log('failed'))
/* server.js */

require('./config/db')

환경변수사용하기 (선택사항)

 

환경변수 사용하기

환경변수는 고정된 값이 아닌 변수를 사용하게 해 주어 개발환경과 프로덕션환경 사이에서 필요한 설정 값을 변경할 필요 없이 한 번의 설정으로 모두 적용되게 하며, 민감한 정보의 노출을 숨

jin-co.tistory.com

이상으로 몽고디비와 노드제이에스 애플리케이션을 연결하는 방법을 살펴보았습니다.

 

728x90
반응형