MongoDB에서 데이터를 추가하는 POST 요청 처리 ( Express Router post)

HYEJIN·2022년 8월 5일
1

Node.js

목록 보기
4/4

https://mongoosejs.com/docs/models.html

router에서 /students 경로를 통해 POST 요청을 하여, 데이터베이스에 새로운 학생 정보를 등록하는 코드

  • 새로운 학생 데이터는 request.body를 통해 입력 받으며
    name(이름), age(나이), major(전공)을 전달 받는다고 가정
const { Router } = require("express");
const { Student } = require("../models");

const router = Router();

router.post("/", async (req, res) => {
    const {name,age,major} = req.body;

    const data = await Student.create({name,age,major});
    res.json(data);
  
//student데이터를 가져와서 print.pug로 render
//  const students = await Student.find({});
//  res.render("print", { students });
  
});

// 학생 데이터를 등록하는 페이지를 render
router.get("/", (req, res) => {
  res.render("register"); //register.pug
});

module.exports = router;

1) form형식에서 요청으로 온 name, age, major값을 저장한다.
const {name,age,major} = req.body;

2) mongo db에 새로들어온 데이터를 create함수를 사용해 저장한다.
const data = await Student.create({name,age,major});

< 실행 >

데이터를 넣고 제출을 누르게 되면 res.json(data)에 의해 아래와 같은 데이터가 화면에 출력된다.


Mongoose 모델에서 필수로 입력 받는 인자를 누락한 상태에서 데이터를 삽입하면 에러가 발생합니다.
따라서 사전에 에러를 처리해주어야 한다.

if (!name || !age || !major){
        return res.status(400).json({
            status:"Error",
            error:"입력되지 않은 데이터가 있습니다.",
        });
    }

0개의 댓글