← 목록

MongoDB와 Node.js를 연동하는 방법

작성: 2024년 05월 28일읽기: 약 3분

MongoDB를 Node.js 애플리케이션과 연동하는 것은 웹 개발에서 매우 흔한 작업입니다. 이 과정을 통해 데이터를 효율적으로 저장하고 관리할 수 있습니다. 복잡한 기술 용어를 피하면서, 이 글에서는 MongoDB를 Node.js와 연동하는 간단한 방법을 안내해드리겠습니다.

시작하기 전에

MongoDB와 Node.js가 설치되어 있어야 합니다. 또한, MongoDB에 데이터베이스와 컬렉션이 생성되어 있어야 합니다.

첫 번째 단계: mongoose 설치

Node.js 애플리케이션에서 MongoDB를 쉽게 사용할 수 있도록 도와주는 라이브러리인 mongoose를 설치해야 합니다. 터미널에서 다음 명령어를 실행하세요:

npm install mongoose

두 번째 단계: MongoDB 연결

이제 mongoose를 사용하여 MongoDB 데이터베이스에 연결해 보겠습니다. 아래 코드 스니펫을 애플리케이션의 주 파일에 추가하세요:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/yourDatabaseName', {
  useNewUrlParser: true,
  useUnifiedTopology: true
});

const db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB 연결 에러:'));
db.once('open', function() {
  console.log("MongoDB에 성공적으로 연결되었습니다");
});

yourDatabaseName을 실제 데이터베이스 이름으로 변경해 주세요.

세 번째 단계: 모델 생성

데이터를 관리하기 위해서는 모델을 생성해야 합니다. 모델은 데이터베이스 내의 문서(document) 구조를 정의합니다. 예를 들어, 사용자 정보를 저장하는 모델을 만들어 보겠습니다:

const mongoose = require('mongoose');

const userSchema = new mongoose.Schema({
  name: String,
  email: String,
  age: Number
});

const User = mongoose.model('User', userSchema);

네 번째 단계: 데이터 생성, 조회, 수정, 삭제

모델이 준비되었다면, 이제 데이터를 생성, 조회, 수정, 삭제할 수 있습니다. 아래는 각각의 작업을 수행하는 예시입니다:

데이터 생성

const newUser = new User({
  name: 'John Doe',
  email: 'john@example.com',
  age: 30
});

newUser.save(function(err) {
  if (err) return console.error(err);
  console.log("새 사용자가 성공적으로 생성되었습니다");
});

데이터 조회

User.find({ name: 'John Doe' }, function(err, users) {
  if (err) return console.error(err);
  console.log(users);
});

데이터 수정

User.findOneAndUpdate({ name: 'John Doe' }, { age: 31 }, function(err, user) {
  if (err) return console.error(err);
  console.log("사용자의 나이가 업데이트되었습니다");
});

데이터 삭제

User.findOneAndDelete({ name: 'John Doe' }, function(err) {
  if (err) return console.error(err);
  console.log("사용자가 삭제되었습니다");
});

이제 MongoDB와 Node.js를 연동하는 기본적인 방법을 마스터했습니다. 이 지식을 바탕으로 더 복잡한 애플리케이션을 구축할 수 있을 것입니다. Happy coding!