在 nodejs 博客应用程序中仅发布一次请求



在我的博客应用程序中,我希望用户只发表一次评论。 博客应用程序是用nodejs,mongodb和express构建的。有哪些方法可以做到这一点?不要求实际代码,只是关于如何实现这一点的想法。

router.post("/",[
check('text').exists().isLength({ min: 2, max:7999 }).trim()
], middleware.isLoggedIn, function(req,res) {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return res.redirect("back");
}
Car.findById(req.params.id, function(err,car){
if(err) {
console.log(err)
res.redirect("/cars")
} else {
Comment.create(req.body, function(err,comment) {
if(err) {
req.flash("error", "Something went wrong, please try again.")              
} else {
comment.author.id= req.user._id;
comment.author.username = req.user.username;
comment.car.id = car._id;
comment.car.carname = car.name;
console.log(comment.author.id== req.user._id, comment._id, "true or false");
console.log(comment._id)
comment.save();
car.comments.push(comment);
car.save();
req.flash("success", "Successfully added review")
res.redirect("/cars/"+car._id)
}
})
}
})

});

var commentSchema = mongoose.Schema({
text: String,

作者: { 编号: { 类型:猫鼬。Schema.Types.ObjectId, 参考: "用户" }, 用户名:字符串 }

  1. 在数据库中创建comments表。它包括有关用户和发布用户评论的信息(例如。comments.user_idcomments.post_id
  2. 使express处理程序接受某些端点/comments上的POST请求。在这个正文中,您希望收到post_iduser_id可能通过一些身份验证机制(查看护照,它可能有助于此机制)和一些content
  3. 向数据库发出请求,检查当前用户是否对此帖子发表评论。 示例查询:

    db.comments.find({ user_id: req.session.user_id, post_id: req.body.post_id })

  4. 如果此用户有注释(在数据库中找到)– 发回状态 400(错误请求)。如果它不存在 - 创建一个并发回 200 状态代码。

将用户 ID 插入集合中的某个位置,当用户添加注释时可能会推入数组。 在添加注释之前,请检查用户 ID 是否不存在。如果存在,请拒绝评论。 如果用户可以在每个博客上发表一次评论,也许也可以将blogID与userID一起插入。

最新更新