[英]Mongoose query - remove document conditional on subdocument value
我试图删除“挑战”集合中的文档,但是仅当用户在具有管理员角色的挑战的参与者列表中时才删除。
我当前的代码日志challenge deleted
,但是实际上并未删除挑战。
这是挑战模式:
var challengeSchema = mongoose.Schema({
name : {type: String, required: true},
description : {type: String, required: true},
startDate: {type: Date, required: true},
endDate: {type: Date, required: true},
creationDate: {type: Date, required: true},
goalType : {type: String, required: true},
goalAmount: {type: Number, required: true},
participants : {type : [], required: true},
categories : {type: [String], required: true}
});
下面是查询的当前尝试,其中Challenge
是模型变量:
Challenge.findOne({"_id" : req.params.challengeId, "participant" : {
$elemMatch : {participantID : req.user.id, participantRole : "admin"}
}}).remove(function(err, challenge){
if (err){
console.log(err);
res.redirect('/user/dashboard');
}
if (!challenge){
console.log("no challenge found");
res.redirect('/user/dashboard');
}
else {
console.log("challenge deleted");
res.redirect('/user/dashboard');
}
})
使用findOneAndRemove代替findOne。 像这样:
Challenge.findOneAndRemove({"_id" : req.params.challengeId, "participant" : {
$elemMatch : {participantID : req.user.id, participantRole : "admin"}
}},function(err, challenge){
if (err){
console.log(err);
res.redirect('/user/dashboard');
}
if (!challenge){
console.log("no challenge found");
res.redirect('/user/dashboard');
}
else {
console.log("challenge deleted");
res.redirect('/user/dashboard');
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.