Node.js 환경 구성 - Part.4-1 MongoDB 연동

누군가·2024년 1월 12일
0

Node.js 환경 구성

목록 보기
5/6
post-thumbnail

※ 다크모드로 읽으시는 것을 추천드립니다.

Node.js - MongoDB 연동

  • Node.js에서 MongoDB와 연동하는 법을 설명합니다.
  • 선행 조건으로 Node.js 및 MongoDB가 설치되어 있는 환경이 필요합니다.

1. 프로젝트 생성

[Node.js] 프로젝트 생성 참조

2. MongoDB 연동

1) Node.js와 MongoDB를 연동하기 위한 모듈 설치

  • npm에는 Node.js와 MongoDB를 연동하기 위한 [mongoose](https://www.npmjs.com/package/mongoose) 모듈과 [mongodb](https://www.npmjs.com/package/mongodb) 모듈이 있습니다.
  • 여기서는 mongoose 모듈을 활용하여 연동합니다.

mongodb 모듈과 mongoose 모듈 차이

  • mongodb 모듈과 mongoose 모듈은 모두 Node.js에서 MongoDB를 연동하기 위한 모듈입니다.
  • 하지만 두 모듈에는 차이점이 존재합니다.

mongodb 모듈

  • MongoDB 인스턴스와 상호작용하기 위한 기본 드라이버입니다.
  • MongoDB에서 데이터 생성 및 관리에 많은 편의성을 제공한다는 장점이 있습니다.

mongoose 모듈

  • mongoose 모듈은 MongoDB를 지원하는 Node.js의 확장 모듈입니다.
  • DB에서 데이터를 조회할 때 데이터를 Javascript 객체로 변환해주는 역할을 하며,
    데이터와 객체를 매핑해준다고 해서 ODM (Object Document Mapping)이라고 합니다.
  • 즉, mongoose는 MongoDB의 ODM입니다.
    mongoose에는 내부적으로 mongodb 모듈이 포함되어 있다고 볼 수 있습니다.
  • 프로젝트 경로의 Root로 이동하여 mongoose 모듈을 설치합니다.
# 프로젝트 Root로 이동
> cd "프로젝트 디렉터리 명"

# mongoose 모듈 설치
> npm install mongoose

2) MongoDB 연동 소스 코드 작성

  • “controller” 폴더와 MongoDB 연동 소스 코드 파일 (controller/mongodb-connector.js)을 생성합니다.
# controller 폴더 생성
> mkdir controller

  • mongoose 모듈 통해 MongoDB 연결 부분 소스 코드를 작성합니다.

controller/mongodb-connector.js

# controller/mongodb-connector.js
const mongoose = require("mongoose");

const connect = () => {
	mongoose.connect("mongodb://ID:Password@Host:27017/DB명?authSource=admin");
};

mongoose.connection.on("error", (error) => {
	console.error("MongoDB Connection Error", error);
});

mongoose.connection.on("disconnected", () => {
	console.error("MongoDB Disconnected, retry...");
	connect();
});

module.exports = connect;
  • 1번 라인: mongoose 모듈을 상수 “mongoose”에 할당합니다.

  • 3 ~ 5번 라인: MongoDB 연결을 모듈화 합니다.

  • 4번 라인: MongoDB URL을 통해 mongoose를 연결합니다.

  • 7 ~ 9번 라인: mongoose 연결에서 에러 발생 시 Console 출력을 통해 에러 정보를 알 수 있습니다.

  • 11 ~ 14번 라인: mongoose 연결이 끊어졌을 경우 Console 출력을 통해 알리며, 재연결을 시도합니다.

  • 16번 라인: 모듈화한 MongoDB 연결을 외부로 내보냅니다.

  • Node.js와 연동하려는 MongoDB Collection에 대한 스키마를 작성합니다.

  • “schemas” 폴더와 스키마 소스 코드 파일 (schemas/*.js)을 생성합니다.

# schemas 폴더 생성
mkdir schemas
  • “book”이라는 이름을 가진 스키마를 생성합니다.

  • 스키마를 작성합니다.

schemas/book.js

# schemas/book.js
const mongoose = require("mongoose");
const { Schema } = mongoose;

const bookSchema = new Schema({
	name: {
		type: String,
		required: true,
		unique: true,
		default: true
	},
	author: {
		type: String,
		required: true
	},
	insertDate: {
		type: Date,
		default: Date.now
	}
});

module.exports = mongoose.model('book', bookSchema, 'book');

소스코드

Reference

https://devlog-wjdrbs96.tistory.com/224

https://velog.io/@soshin_dev/Node.js-Mongoose-를-사용해보자

https://velog.io/@shrup5/MongoDb와-Mongoose의-차이점

https://hello-developer.tistory.com/77

https://adjh54.tistory.com/46

profile
개발 중에 알게된 내용을 공유합니다 (나도 기억할겸)

0개의 댓글