ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [mongoose 설치]
    Database/MongoDB 2022. 1. 20. 16:55
    1. 몽고디비 사이트 접속
    2. CLUSTER 만들기 => 무료 클러스터 생성
    3. Mongo DB 유저 생성
      • cluster 생성 후 username과 password생성
      • Connect your application
      • driver와 version 확인 후 아래 코드 복사
    4. Mongoose 다운로드
      • npm install mongoose --save  ( 패키지 설치 )
      • Mongoose
        • NoSQL Database 
        • 몽고DB를 편하게 쓸 수 있는 Object Modeling Tool
        • Node.js와 Mongo DB를 연결해주는 ODM (Object Document Mapping)
        • 객체와 문서를 1대1 매칭하는 역할
        • 관련 문서 참고 => https://mongoosejs.com/docs/api/query.html
    5. mongoose 실행(연결)
      • // mongoose connect
        // index.js
        
        const mongoose = require("mongoose");
        
        mongoose.connect(config.mongoURI, {
            useNewUrlParser: true,
            useUnifiedTopology: true,
            useCreateIndex: true,
            useFindAndModify: false,
        })
        .then(() => console.log("MongoDB Connected..."));  // connect success
        .catch((err) => console.log(err));  // error
        
        // config.mongoURI
        // cluster connect시 복사했던 username, password부분 삽입
        
        // 몽구스 버전이 6.0이상이라면
        // MongoParseError: options usecreateindex, usefindandmodify are not supported 에러 발생
        
        // 몽구스 버전이 6.0이상이라면 몽구스는 항상
        // useNewUrlParser:true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false로
        // 기억하고 실행하기 때문에 더 이상 지원하지 않는다 ==> 생략 가능

     

    config.mongoURI 설정하기

    현재 이 위치에는 cluster 만들면서 username, password생성된 connect 코드이다.

    개인정보이므로 보호할 필요가 있다.!

    • 환경에 따른 분기처리
      • local : development
      • deploy(배포 후)환경 : production (ex, heroku site)
        • heroku
        • 무료로 호스팅할 수 있도록 해주는 서비스
        • 해당 도메인으로 일정시간 동안 요청이 없을 경우 수면 상태로 전환(sleep)
      • // config > key.js
        
        if (process.env.NODE_ENV === "production") {
            // process.env.NODE_ENV : 환경변수
                module.exports = require("./prod");
            } else {
                module.exports = require("./dev");
            }
            
        // config > dev.js
        
        module.exports = {
            mongoURI: "mongodb+srv://username:password.....",
        };
        
        
        // config > prod.js
        
        module.exports = {
            mongoURI: process.env.MONGO_URI
        }
      • // index.js
        
        cost config = require("./config/key");
        
        mongoose.connect(config.mongoURI)
            .then(() => console.log("process.env.NODE_ENV", process.env.NODE_ENV)) // undefined
            .then(() => console.log("MongoDB Connected..."))
            .catch((err) => console.log(err));
            
        // index.js 실행 시 process.env.NODE_ENV가 undefined 결과가 나오기 때문에
        // dev.js실행한다.
    • .gitignore
      • 환경변수에 따른 분기처리 후 dev.js에 있는 개인정보를 git에 올리지 않도록 설정이 필요
      • 루트 디렉토리에 .gitignore 파일 생성 후
      • dev.js 코드 추가

     

    'Database > MongoDB' 카테고리의 다른 글

    [save, insertOne] - 데이터 저장  (0) 2022.01.21
    [Schema, model]  (0) 2022.01.20
Designed by Tistory.