Nodejs with MongoDB(2)

Kim Seoung Hun·2022년 10월 25일
0

Nodejs with MongoDB

목록 보기
2/3
post-thumbnail

동기와 비동기

nodejs 비동기 프로그램이다.

동기: 응답을 받아야지만 다음 동작을 실행 
비동기: 응답에 상관 없이 바로 다음 과정을 진행

=> 비동기 방식이기 때문에 차례대로 진행될 필요가 있는 경우
async await를 이용한다.

이를 통해 몽고디비에 연결하기 위해 MongoDB NodeJS Driver를 이용해도 되지만,
몽고디비 함수가 내장된 편리한 몽고디비 프레임워크인 '몽구스(mongoose)'를 사용하자

npm i mongoose

몽구스를 불러오기 위해서는 require('mongoose') 로 불러온다.

const express = require("express");

그럼 다음 몽구스 함수를 이용해 몽고디비를 연결하고 한다.
몽고디비를 연결해줄때에는 connet()를 이용해준다

const MONGO_URI = "mongodb+srv://kimseounghun:<password>@mongodbstudy.rgulq2j.mongodb.net/?retryWrites=true&w=majority";

mongoose.connect(MONGO_URI);

 
이때 몽구스를 통해 디비를 연결하기 전에 포스트 요청이 있는경우 오류가 발생할 수 있기 때문에 async() => {await ... } 를 이용해 몽구스가 연결이 되고 그 뒤로 실행 되도록 해주자

! 몽구스 컨넥팅이 실패하면 오류 메세지를 뱉어낼 수 있도록 async 사용하면 try catch 문법을 사용해주자

const express = require("express");
const app = express();
const mongoose = require('mongoose');


const users = []

const MONGO_URI = "mongodb+srv://kimseounghun:<password>@mongodbstudy.rgulq2j.mongodb.net/?retryWrites=true&w=majority";

const server = async() => {
    try {
        await mongoose.connect(MONGO_URI);
        console.log('mongodb conneted!');
        app.use(express.json())

        app.get('/user', function(req, res) {
            res.send({users: users});
        });

        app.post('/user', function(req, res){
            console.log(req.body);
            users.push({ name: req.body.name, age: req.body.age})
            return res.send({success: true})
        })



        app.listen(3000, function(){
            console.log('server listening on port 3000'); 
        })
    } catch (error) {
        console.log(error);
    }
}

server();

결과


─    ~/Desktop/nodejsmongodb/nodejsstudymongodb  on   master !2 ?3 ▓▒
╰─ nodemon server.js
[nodemon] 2.0.15
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js src/server.js`
mongodb conneted!
server listening on port 3000
profile
낮 코딩 밤에는 그림 종종 시

0개의 댓글