gpt4 book ai didi

javascript - Mongoose 查询 - 删除以子文档值为条件的文档

转载 作者:行者123 更新时间:2023-12-03 03:05:53 25 4
gpt4 key购买 nike

我正在尝试删除“挑战”集合中的文档,但前提是用户位于具有管理员 Angular 色的该挑战的参与者列表中。

我当前的代码记录挑战已删除,但挑战实际上并​​未删除。

这是挑战模式:

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');
}
})

关于javascript - Mongoose 查询 - 删除以子文档值为条件的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47171183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com