Nodejs

[Nodejs] Express MongoDB 연결

hyomin1 2023. 8. 11. 16:49

 

오늘은 Express와 MongoDB를 연결해보려 합니다.

 

우선 Express에서 MongoDB를 사용하기 위해 모듈을 설치합니다

npm i mongoose

 

모듈이 설치 되었으면 db.js파일과 .env 파일을 만들겠습니다. db.js에는 Express에서 MongoDB연결하는 코드들을 작성할 예정이고 .env에는 MongoDB URL을 보안과 같은 여러 이유로 작성하려합니다. 

 

.env파일에 MongoDB URL을 적어줍니다. 

//.env
DB_URL ="mongodb://127.0.0.1:27017/study-matching-service" 
// MongoDB 주소 작성

그리고 .env파일의 값들이 프로젝트 전체에서 사용 가능한 환경 변수로 설정해 주기위해 dotenv패키지를 설치하여 추가해주겠습니다.

npm i dotenv

그리고 기존에 작성해두었던 server.js로 돌아와 불러와주는데 모든 파일에서 사용가능하게 하기 위해 최상단에 import를 해주겠습니다.

//server.js
import "dotenv/config";  //최상단에 추가하기
import express from "express";
import cors from "cors";

const app = express();
const PORT = 8080;

app.use(express.json());
app.use(cors());

const handleServer = () => {
  console.log(`Server listening on port http://localhost:${PORT}`);
};

app.listen(PORT, handleServer);

 

설정이 완료 되었으면 db.js로 와서 Express와 MongoDB를 연결해보겠습니다.

import mongoose from "mongoose";

우선 설치한 모듈을 import 해옵니다

MongoDB와 연결을 설정해주는 함수인 mongoose.connect()와 .env파일에 만들어 두었던 URL을 가져와 연결해보겠습니다. .env파일에 만들어 놓은 환경변수를 사용하려면 process.env.변수명을 써주면 사용이 가능합니다.

//db.js
import mongoose from "mongoose";

mongoose.connect(process.env.DB_URL);

그리고 MongoDB와의 연결을 관리하는 객체를 가져오겠습니다.

const db = mongoose.connection; //MongoDB와 연결을 관리해주는 객체

마지막으로 MongoDB와 연결에 오류가 발생했을 때와 연결이 열렸을때 실행되는 코드를 작성해 주도록 하겠습니다.

const db = mongoose.connection;

db.on("error", (error) => console.log("MongoDB Error")); 
//MongoDB 연결에 오류 발생시
db.once("open", () => console.log("Connected MongoDB")): 
//MongoDB 연결에 성공했을 시

최종 코드입니다.

//db.js
import mongoose from "mongoose";

mongoose.connect(process.env.DB_URL);

const db = mongoose.connection;

db.on("error", (error) => console.log("MongoDB Error"));
db.once("open", () => console.log("Connected MongoDB"));

작성한 db.js를 server.js에 불러와주면 완성입니다.

//server.js
import "dotenv/config";
import express from "express";
import cors from "cors";
import "./db.js";   //db.js 불러오기

const app = express();
const PORT = 8080;

app.use(express.json());
app.use(cors());

const handleServer = () => {
  console.log(`Server listening on port http://localhost:${PORT}`);
};

app.listen(PORT, handleServer);

확인해보기 위해 터미널창을 열고 MongoDB 서버를 시작해주는 mongod를 입력해줍니다.

mongod

터미널을 하나 더 열고 express를 실행시켜 줍니다.

npm start

 Conncted MongoDB가 뜨면서 성공적으로 연결이 되었습니다.