- ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์ ๋๊ธ์ ์์ฑํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํจ
1. ๋๊ธ ์คํค๋ง ์ค๊ณ
- ๋๊ธ(Comment)์ ์ ์ฅํ๊ธฐ ์ํด Mongoose๋ฅผ ์ฌ์ฉํ์ฌ ๋๊ธ ๋ชจ๋ธ์ ์ ์.
- ์ด ๋ชจ๋ธ์ ๋๊ธ์ด ์ํ ๊ฒ์๋ฌผ๊ณผ ์์ฑ์ ์ ๋ณด๋ฅผ ํฌํจํด์ผ ํจ!
1) ๋๊ธ ์คํค๋ง (comment.js)
(์ด์ ํฌ์คํธ)
2. ๋๊ธ ์์ฑ API ๊ตฌํ
- ์ด์ ๋๊ธ์ ์์ฑํ ์ ์๋ API ์๋ํฌ์ธํธ๋ฅผ ์ค์ .
- ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธํ์ ๋๋ง ๋๊ธ์ ์์ฑํ ์ ์๋๋ก ์ธ์ฆ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉ.
1) ๋๊ธ ์์ฑ ๋ผ์ฐํฐ
//createComment.js
const express = require("express");
const router = express.Router();
const { Comment } = require("../../models/Comment"); // ๋๊ธ ๋ชจ๋ธ
const { Post } = require("../../models/Post"); // ๊ฒ์๋ฌผ ๋ชจ๋ธ
const { auth } = require("../auth");
const cookieParser = require("cookie-parser");
router.use(cookieParser());
router.post("/:postId", auth, async (req, res) => {
const { text } = req.body; // ์์ฒญ ๋ณธ๋ฌธ์์ text๋ง ๊ฐ์ ธ์ค๊ธฐ
const postId = req.params.postId; // ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์์์ postId ๊ฐ์ ธ์ค๊ธฐ
const userId = req.user._id; // ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์ ID
try {
// ํด๋น ๊ฒ์๋ฌผ์ด ์กด์ฌํ๋์ง ํ์ธ
const post = await Post.findById(postId);
if (!post) {
return res.status(404).json({ message: "๊ฒ์๋ฌผ์ ์ฐพ์ ์ ์์ต๋๋ค." });
}
// ๋๊ธ ์์ฑ
const newComment = new Comment({
post: postId,
user: userId,
post: postId,
text: text,
createdAt: Date.now(),
});
await newComment.save(); // ๋๊ธ DB์ ์ ์ฅ
// // ๊ฒ์๋ฌผ์ ๋๊ธ ์ถ๊ฐ
// post.comments.push(newComment._id);
// await post.save();
// ๊ฒ์๋ฌผ์ comments ๋ฐฐ์ด์ ๋๊ธ ID ์ถ๊ฐ
await Post.findByIdAndUpdate(postId, {
$push: { comments: newComment._id },
});
return res.status(201).json({
message: "๋๊ธ์ด ์ฑ๊ณต์ ์ผ๋ก ์ถ๊ฐ๋์์ต๋๋ค.",
comment: newComment,
});
} catch (error) {
return res.status(500).json({
message: "๋๊ธ ์ถ๊ฐ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.",
error: error.message,
});
}
});
module.exports = router;
3. ์๋ต ์์
- ๋๊ธ์ด ์ฑ๊ณต์ ์ผ๋ก ์ถ๊ฐ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ JSON ํ์์ ์๋ต์ ๋ฐ์
json
์ฝ๋ ๋ณต์ฌ
{
"message": "๋๊ธ์ด ์ฑ๊ณต์ ์ผ๋ก ์ถ๊ฐ๋์์ต๋๋ค.",
"comment": {
"_id": "comment_id",
"post": "post_id",
"user": "user_id",
"text": "์ด ๊ฒ์๋ฌผ ์ ๋ง ์ข๋ค์!",
"createdAt": "2024-11-02T07:00:00.000Z"
}
}
4. ๊ฒฐ๊ณผ ๐
- ์์ง ๋๊ธ ์ญ์ ๊ธฐ๋ฅ ๊ตฌํ์ด ์๋์ด ์์ด์ comments ์ปฌ๋ ์ ์์ ๋๊ธ์ ์ง์๋ posts์๋ ์ด์ ๋๊ธ๋ค์ด ๋จ์์์
- ๊ทธ๋์ ๋ค์์ ๋๊ธ ์ญ์ ๋ฅผ ๊ตฌํํด๋ณผ๊ฑฐ์~