我将评论存储在以下模型中的mongoose
中:
var CommentsSchema = new Schema({
username: {type: String, required: true},
comment_id: {type: String, required: true},
text_content: {type: String},
reportedUsers: {type: [String]},
deleted: {type: Boolean, default: false}
}
我想介绍用户将评论标记为冒犯的可能性 - 在这种情况下评论将被删除(在我的情况下 - 标记deleted
将设置为true
)。
当3个(或更多)用户将该评论标记为冒犯时,我想更改此标记。
为了避免用户两次标记相同的评论,我想将他的用户名存储在reportedUsers
数组中。
我的想法是创建一个端点,该端点接受username
和comment_id
,并将此username
添加到数组reportedUsers
。此外,如果reportedUsers
中的条目数量大于3,则应将deleted
标记设置为true
。
到目前为止,我有以下代码:
commentsRoutes.post('/:commentId/report', function (req, res) {
var commentId = req.params.commentId;
var username = req.body.username;
if (username != undefined) {
User.findOneAndUpdate(
{comment_id : commentId },
{
$push: {"reportedUsers": username},
},
{safe: true, upsert: true, new: true},
function(err, user) {
if(err)
console.log(err);
res.json(user);
}
);
}
});
但是,如果deleted
中的条目数大于3,我如何在此处介绍更改标记reportedUsers
的更改?
答案 0 :(得分:1)
在回调中,您可以检查reportedUsers
数组的长度并将用户更新为
User.findOneAndUpdate(
{ "comment_id": commentId },
{ "$push": { "reportedUsers": username } },
{ "upsert": true, "new": true},
function(err, user) {
if(err)
console.log(err);
if (user.reportedUsers.length >= 3)
user.deleted = true;
user.save(function(err, newUser){
res.json(newUser);
});
}
);