我要删除同一作者的所有评论 这些评论存储在mongodb集合中,并且是露营地的一部分(使用引用)
我遍历所有露营地,同时填充其评论数组,然后遍历每个露营地的评论数组,然后,如果要删除评论作者的用户,则在找到评论中的索引后,我使用splice方法删除了评论数组
这里的问题是,拼接方法总是跳过注释,我也无法保存删除注释后所做的更改
let campgroundsWithComments = await Campground.find().populate('comments').exec();
campgroundsWithComments.forEach(function(campgroundWithComments) {
campgroundWithComments.comments.forEach(function(comment) {
if (comment.author.id.equals(req.params.id)) {
let commentIndexcampgroundWithComments.comments.indexOf(comment);
campgroundWithComments.comments.splice(commentIndex, 1);
}
});
});
console.log(campgroundsWithComments);
campgroundsWithComments.save();
//user schema
var UserSchema = new mongoose.Schema({
username: String,
password: String,
});
module.exports = mongoose.model('User', UserSchema);
//campground schema
var campgroundSchema = new mongoose.Schema({
name: String,
description: String,
comments: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Comment'
}
]
});
module.exports = mongoose.model('Campground', campgroundSchema);
//comment schema
var commentSchema = mongoose.Schema({
text: String,
author: {
id: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
},
username: String
}
});
module.exports = mongoose.model('Comment', commentSchema);
我得到campgroundsWithComments.save();不是一个函数,但是我确定修改后可以使用该函数将文档保存到db
当我console.log campgroundsWithComments对象时,我看到只有一个注释被删除(每个Campground的初始注释数组都有2个相邻注释要删除,但最后它仅删除了第一个)
尽管每次删除评论之前,我都会找到正确的索引