본 정리는 인프런 John Ahn 따라하며 배우는 노드, 리액트 시리즈 - 기본 강의를 참고하였습니다.

MongoDB url은 배포시 숨겨야 함

2개의 다른 환경에서 개발

스크린샷 2022-12-27 오후 9 59 16

  • config 폴더 생성
    • dev.js 파일 생성 후 다음 코드 작성

        module.exports ={
            mongoURI:'mongodb+srv://Jun:zxc123@junprojcet.kzx4jm1.mongodb.net/?retryWrites=true&w=majority'
        }
      
    • prod.js 파일 생성 후 다음 코드 작성

        module.exports = {
            mongoURI : process.env.MONOG_URI
        } //헤로쿠의 경우
      
    • key.js 파일 생성 후 다음 코드 작성

        if(process.env.NODE_ENV === 'production')
        {
        	module.exports = require('./prod');
        }
        else
        {
        	module.exports = require('./dev');module.exports ={
            mongoURI:'mongodb+srv://Jun:zxc123@junprojcet.kzx4jm1.mongodb.net/?retryWrites=true&w=majority'
            }
        }
      
  • index.js 파일 코드 추가 및 수정

      const config = require("./config/key");
        
      mongoose.connect(config.mongoURI,
      {
          useNewUrlParser: true, useUnifiedTopology: true 
      }).then(() => console.log('Successfully connected to mongodb'))
      .catch(e => console.error(e));
    
    • 전체 코드

        const express = require('express')
        const app = express()
        const port = 3000
              
        const mongoose = require('mongoose')
        const {User} = require("./Models/User")// 미리 정의했던 모델 가져오기
        const bodyParser = require('body-parser')
              
        const config = require("./config/key");
              
        // 데이터 분석을 위한 추가 설정
        app.use(bodyParser.urlencoded({extended:true}));  
        app.use(bodyParser.json());
              
        mongoose.set('strictQuery',true)
        mongoose.connect(config.mongoURI,
        {
            useNewUrlParser: true, useUnifiedTopology: true 
        }).then(() => console.log('Successfully connected to mongodb'))
        .catch(e => console.error(e));
              
        app.get('/', (req, res) => {
          res.send('Hello World!')
        })
              
        app.post('/register', (req,res) =>{
            // 회원 가입할 때 필요한 정보들을 클라이언트로부터 받으면 데이터베이스에 정보 저장
            // 미리 정의했던 모델을 가져와야 함
            const user = new User(req.body);
            user.save((err, userInfo) =>{// user모델에 정보들 저장
                //만약 에러가 발생 시 json형식으로 에러와 에러메시지 전달
                if(err) return res.json({success:false, err})
                return res.status(200).json({
                    success:true
                })
            })
        })
              
        app.listen(port, () => {
          console.log(`Example app listening on port ${port}`)
        })
      
  • gitignore 에서 dev.js 파일 추가