본문 바로가기
데이터베이스

mongoose로 MongoDB 접속하기

by 즐거운코딩 2023. 7. 24.
반응형

MongoDB를 설치하고 mongoose 로 MongoDB에 접속하는 방법에 대해 소개합니다.

간단하게 DB 접속하고 모델을 만들고 샘플 데이터를 저장하고 잘 저장되었는지 확인해보겠습니다.

 

1.  mongoose 설치하고 DB 접속하기

 mongoosebasic 디렉터리를 만들고,

$ npm init -y

$ npm i mongoose 

mongoose 설치

VS Code 실행하여 index.js 파일을 만듭니다. 

$ code . 

 

index.js 에서 mongoDB 연결 합니다.

https://mongoosejs.com/ 사이트에서 제공하는 이용방법으로 사용합니다.)

const mongoose = require("mongoose");
mongoose
  .connect("mongodb://127.0.0.1:27017/movieApp")
  .then(() => {
    console.log("connection open !!!");
  })
  .catch((err) => {
    console.log("OH NO error !!!");
    console.log(err);
  });

기본적으로 mongoose.connet 를 사용하며 기본 접속 URL을 지정합니다. URL 맨 뒤에 입력한 movieApp 은 DB 이름 입니다.

정상적인 접속 여부를 확인하기 위해 then/catch 를 사용합니다.

then 은 접속이 정상인 경우 터미널에 표출하는 내용이며, catch 는 접속 오류인 경우 오류 메시지를 표출해줍니다.

터미널에서 index.js 를 실행하여 정상 연결여부 확인해봅니다.

$ node index.js

 

2.  Schema 만들기

영화정보를 예시로 만들기 위해 해당 정보를 담을 수 있는 그릇에 해당되는 Schema를 만들어 봅니다.

만들 때 mongoose.Schema() 를 사용합니다.

영화정보(제목, 출시연도, 평점, 등급정보)를 예시로 다음과 같이 만들어 봅니다.

const movieSchema = new mongoose.Schema({
  title: String,
  year: Number,
  score: Number,
  rating: String,
});

3.  Model 만들기

필요한 데이터 항목으로 구성한 Schema 에 해당하는 모델을 만듭니다.

모델명의 첫글자는 대문자이며, 단수로 지정합니다. 이렇게 정의하면 자동으로 집합(복수형)을 만들어 줍니다.

mongoose.model(모델명, 스키마) 로 만들면 됩니다.

const Movie = mongoose.model("Movie", movieSchema);

4. 샘플 데이터 입력하기

만들어진 모델을 활용하여 다음과 같이 데이터를 입력합니다.

const amadeus = Movie({
  title: "Amadenus",
  year: 1986,
  score: 9.2,
  rating: "R",
});

5. 입력한 데이터를 DB에 접속하여 확인하기

터미널에서 $ node 를 실행하면 CLI 로 전환됩니다.

여기서 .load 로 index.js 를 불러오면 "connection open" 으로 정상적으로 DB 연결된 것 확인합니다.

> .load index.js

이어서 입력한 데이터인 amadeus 를 입력하면 해당 인스턴스가 조회됩니다.

실제 DB에 저장되었는지 확인하기 위해 터미널에서 mongo CLI 를 실행하고, DB이름인 movieApp 으로 전환하여 입력된 데이터를 확인합니다. 

$ mongo

$ use movieApp

$ db.movies.find()

-> 아무 것도 나오지 않는데 아직 amadeus 영화정보가 DB에 저장된 것이 아닙니다.

실제 저장하기위해 save() 를 이용합니다.

Promise가 나오지만 바로 저장됩니다.

이제 mongo CLI 에서 다시 데이터를 조회해 봅니다.

이제 집합에 포함된 새로운 문서인 영화정보가 표출됩니다.

영화정보를 수정할 경우 우선 node CLI 에서 amadeus.score = 9.5 같이 해당 항목의 값을 직접 바꿀 수 있으나 DB에 반영되기 위해서서는 다시 amadeus.save() 를 실행합니다.

다시 mongo CLI에서 데이터를 조회해보면 score가 9.2 -> 9.5 로 변경된 것을 확인할 수 있습니다.

 

지금까지 Model의 메서드중 find() 만 사용했지만 다음과 같이 다양한 메서드를 앞으로 사용해보고자 합니다.

https://mongoosejs.com/docs/api/model.html

반응형