관리 메뉴

즐겁게, 코드

Express.js & MongoDB 기반 REST api 구현하기 - 2편 본문

💻 백엔드/Node.js

Express.js & MongoDB 기반 REST api 구현하기 - 2편

Chamming2 2020. 12. 30. 14:07

지난 글에서 익스프레스를 활용한 간단한 REST api 서버를 만들었다.

서버만 만들고 마치기는 2% 아쉬우니, 몽고디비(MongoDB)와 연계해 CRUD 동작을 구현해 보자.

 

이번 글에서는 몽고디비를 클라우드 서비스로 제공하는 MongoDB Atlas 사용법을 정리할 예정이다.

먼저 cloud.mongodb.com/ 으로 들어가 회원가입을 마치면 보이는 아래 화면에서 [New Project] 를 선택해주자.

프로젝트의 이름과 접근 권한을 설정해주면 아래 화면이 나타난다.

아직 우리가 만든건 껍데기에 불과하니 [Build a Cluster] 를 선택해 본격적인 데이터베이스를 만들어 보자.

사용량에 따라 플랜을 선택한 다음 서비스 제공자는 AWS로 설정한 다음, 하단 배너의 [Create Cluster] 버튼을 클릭하면 DB를 사용할 가상 환경이 구축된다. (이때 약 2~5분의 시간이 소요되니 합법적으로 쉬다 오자.)

클러스터가 생성되면 DB를 모니터링할 수 있는 화면이 보일 것이다.

이제 [COLLECTIONS] 를 선택해 실제 데이터베이스를 생성할텐데, [Add My Own Data] 를 눌러 데이터베이스의 이름과 하위 분류(컬렉션) 의 이름을 정해준다. 데이터베이스의 이름은 Node.js와의 연결을 위해서 필요하니 기억해 두자. (컬렉션 이름이 아니다!) 

이제 데이터베이스가 완성된 모습이다.

앞으로 데이터베이스에 새로운 스키마를 추가하면 이곳에서 확인할 수 있으며, GUI를 통해 데이터를 관리할 수도 있다.

이제 완성된 데이터베이스를 Node.js 프로젝트와 연동할 차례다.

클러스터 대시보드로 돌아와 이번에는 [CONNECT] 를 선택해보자. 

그럼 이런 설정 화면이 나타나는데, [Allow Access from Anywhere] - [Add IP Adress] 를 선택한 다음 사용자 정보를 입력한다.

처음 입력하는 사용자는 자동으로 관리자가 되며 유저네임과 비밀번호는 다음에도 써야 하니 꼭 기억한다.

세 가지 연결 방법 중 [Connect your application] 을 선택한 후 나타나는 URI를 복사해둔다.

이제 아틀라스 설정은 모두 끝났고, Node.js 프로젝트로 돌아와 npm i mongoose 를 입력해 mongoose 라이브러리를 설치한다.

공식 mongodb 라이브러리도 있지만 mongoose 쪽이 훨씬 사용하기 편하다. 쉬운 걸 쓰자!

 

몽고디비와 내 프로젝트를 연결하는 mongoose.connect() 에는 방금 복사한 url을 넣어야 하는데, <password> 부분은 처음 생성한 사용자 정보 비밀번호, <dbname> 은 [COLLECTIONS] 메뉴에서 생성한 데이터베이스 이름으로 덮어쓴다. (클러스터, 컬렉션 이름이 아닌 데이터베이스 이름이다!)

 

Ex. 유저네임이 admin, 비밀번호가 123456, 데이터베이스 이름이 MyDB

-> "mongodb+srv://admin:123456@cluster0.gnluu.mongodb.net/MyDB?retryWrites=true&w=majority"

// server.js
const express = require("express");
const app = express();
const mongoose = require("mongoose");

mongoose.connect("복사한 몽고디비 연결 URL", {
  // 아래 두 옵션을 추가하지 않으면 경고를 출력한다.
  useUnifiedTopology: true,
  useNewUrlParser: true,
});

const db = mongoose.connection;
db.on("error", (err) => console.error(err));
db.once("open", () => console.log("데이터베이스 연결 성공"));

const accountRouter = require("./routes");
app.use("/account", accountRouter);

app.listen(5000, () => {
  console.log("server started at 5000");
});

여기까지 잘 따라왔다면 데이터베이스가 프로젝트와 연결된 모습을 확인할 수 있다.

몽고디비를 연결하는 데까지 성공했으니 몽고디비에서 CRUD를 수행하는 방법은 다음 글에 나눠서 정리하도록 하겠다.

반응형
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆