如何根据其他字段的值更改猫鼬模式中的标志?
How can I change the flag in my mongoose schema based on the value of other field?
我将评论存储在以下模型的 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);
}
);
}
});
但是如果 reportedUsers
中的条目数大于 3,我如何在这里引入更改标志 deleted
的更改?
在回调中,您可以检查 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);
});
}
);
我将评论存储在以下模型的 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);
}
);
}
});
但是如果 reportedUsers
中的条目数大于 3,我如何在这里引入更改标志 deleted
的更改?
在回调中,您可以检查 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);
});
}
);