- ์ฌ์ฉ์๊ฐ ๊ฒ์๋ฌผ์์ ๋ณธ์ธ์ด ์์ฑํ ๋๊ธ์ ์ญ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํจ
1. ๋๊ธ ์ญ์
1) ๋๊ธ ์ญ์ ๋ผ์ฐํฐ
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.delete("/:commentId", auth, async (req, res) => {
const commentId = req.params.commentId; // ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์์์ commentId ๊ฐ์ ธ์ค๊ธฐ
const userId = req.user._id; // ๋ก๊ทธ์ธ๋ ์ฌ์ฉ์ ID
try {
// ๋๊ธ์ ์ฐพ์์ ์ญ์
const comment = await Comment.findById(commentId);
if (!comment) {
return res.status(404).json({ message: "๋๊ธ์ ์ฐพ์ ์ ์์ต๋๋ค." });
}
// ๋๊ธ ์์ฑ์๊ฐ ๋ง๋์ง ํ์ธ
if (comment.user.toString() !== userId.toString()) {
return res
.status(403)
.json({ message: "๋๊ธ์ ์ญ์ ํ ๊ถํ์ด ์์ต๋๋ค." });
}
// ๋๊ธ ์ญ์
await Comment.findByIdAndDelete(commentId);
// ๋๊ธ์ด ๋ฌ๋ฆฐ ๊ฒ์๋ฌผ์์ ๋๊ธ ID ์ ๊ฑฐ
await Post.findByIdAndUpdate(comment.post, {
$pull: { comments: commentId },
});
return res.status(200).json({
message: "๋๊ธ์ด ์ฑ๊ณต์ ์ผ๋ก ์ญ์ ๋์์ต๋๋ค.",
});
} catch (error) {
return res.status(500).json({
message: "๋๊ธ ์ญ์ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.",
error: error.message,
});
}
});
module.exports = router;
- ๋๊ธ ์์ด๋ ์ ๋ ฅํด ์ญ์ ๊ตฌํ
- ๋ก๊ทธ์ธํ์ ๋๋ง ์ญ์ ๊ฐ๋ฅ (auth ๋ฏธ๋ค์จ์ด ์ฌ์ฉ)
- ๋๊ธ ์์ฑํ ๋ณธ์ธ๋ง ์ญ์ ๊ฐ๋ฅ(user ์์ด๋ ํ์ธํจ)
2. ๊ฒฐ๊ณผ ๐
1) ๋๊ธ ์ญ์ ์ฑ๊ณต