티스토리 뷰

728x90
반응형

1. create model

먼저 모델을 생성해준다.

// server > models > Comment.js
const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const commentSchema = mongoose.Schema(
  {
    writer: {
      type: Schema.Types.ObjectId,
      ref: "User",
    },
    postId: {
      type: Schema.Types.ObjectId,
      ref: "Video",
    },
    responseTo: {
      type: Schema.Types.ObjectId,
      ref: "User",
    },
    content: {
      type: String,
    },
  },
  { timestamps: true }
);

const Comment = mongoose.model("Comment", commentSchema);
module.exports = { Comment };

 

2. route create

다음은 라우터를 생성해준다.

server > routes에 comment.js 생성

다음과 같이 라우터 생성을 해준 후 index.js에 하나의 문구를 추가한다.

// server > index.js
// 중략
app.use("/api/comment", require("./routes/comment"));
// 중략

클라이언트에서 api/comment경로를 요청할 경우, routes/comment로 가서 해야 할 일을 진행해!라는 의미이다. 그런 다음 아래와 같은 코드를 작성한다.

// server > routes > comment.js

const express = require("express");
const router = express.Router();
const { Comment } = require("../models/Comment");

//=================================
//             Comment
//=================================

router.post("/saveComment", (req, res) => {
  const comment = new Comment(req.body);
  comment.save((err, comment) => {
    if (err) return res.json({ success: false, err });
    Comment.find({ _id: comment._id })
      .populate("writer")
      .exec((err, result) => {
        if (err) return res.json({ success: false, err });
        res.status(200).json({ success: true, result });
      });
  });
});

module.exports = router;

Comment를 모든 정보를 가져와 저장을 하는데, 에러가 발생할 때와 에러가 발생하지 않을 때는 find함수를 사용하여 _id값을 가져온다.

 

오늘의 코드 바로보기

728x90
반응형
댓글
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함