본문 바로가기
Frontend/Project(개인 기록용)

Mongoose활용하여 Node.js와 MongoDB를 연결

by Johnny_gon 2023. 6. 1.
728x90
반응형

참조사이트를 읽어보니 블록도만 봐도 딱 어떤 느낌이지 알 것 같다.

server단에서 mongoose를 이용해 mongoDB에 쉽게 접근하는 방법이 있는게 아닐까??

이미지 출처 : https://devlog-h.tistory.com/27

일단 몽구스를 알아보자

Mongoose는 Node.js와 MongoDB를 연결해주는 ODM이라고 합니다

ODM(Object Document Mapping) : 객체와 문서를 1대1로 매칭하는 역할

 

MongoDB(nosql)의 경우 table이라는 개념이 없기 때문에 문제를 대비하여

Schema를 도입한 것이라고 합니다.

 

Schema는  SQL의 table과 비슷한 개념

(데이터를 넣을 때 schema에서 선언한 틀에 맞게 데이터를 넣을 수 있도록 도와줍니다.)

 

참조 : https://devlog-h.tistory.com/27

 

MongoDB? Mongoose로 편하게 사용하자!

안녕하세요 :D 휴몬랩 초보개발자 참새입니다 :> NoSQL 데이터베이스로 분류되는 MongoDB는 가장 유명한! NoSQL데이터베이스 시스템입니다. 그렇다면 Mongoose는 무엇일까요? Mongoose는 Node.js와 MongoDB를

devlog-h.tistory.com

 

사용법은 Mongoose 사이트에 잘 나와있다

 

참조 : https://mongoosejs.com/docs/index.html

 

Mongoose v7.2.3: Getting Started

First be sure you have MongoDB and Node.js installed. Next install Mongoose from the command line using npm: $ npm install mongoose --save Now say we like fuzzy kittens and want to record every kitten we ever meet in MongoDB. The first thing we need to do

mongoosejs.com

 

작업 코드 

 
 const express = require("express");
 const app = express();
 const path = require("path");
 const mongoose = require("mongoose");
 
 const port = 5000;

 app.use(express.static(path.join(__dirname, "../client/build")));
 app.listen(port, () => {
   mongoose.connect(
     "mongodb+srv://아이디:비밀번호@cluster0.73hfjuf.mongodb.net/Community?retryWrites=true&w=majority"
   )
 .then(() => {
       console.log(`mongoDB 정상 연결 후 포트 열렸습니다. ${port}`);
     })
     .catch((err) => {
       console.log(`mongoDB 정상 연결 에러. ${err}`);
     });
 
 });

 app.get("/", (req, res) => {
   res.sendFile(path.join(__dirname, "../client/build/index.html"));
 });
 app.get("*", (req, res) => {
   res.sendFile(path.join(__dirname, "../client/build/index.html"));
 });
 

위 코드처럼 mongoose를 불러와주고

 

몽고DB에서 긁어온 uri에 아이디 비번 넣어준 후 적용해서 터미널을 확인하면 정상 연결 된 것을 확인할 수 있습니다.

 

에러 상황을 대비해 then catch문을 추가하여 에러 발생시에 터미널에서 log를 확인할 수 있습니다.

 

728x90
반응형