这是我的模特。
const UserSchema = mongoose.Schema({
name: String,
comments: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'Comment'
}
]
});
const CommentSchema = new mongoose.Schema({
comment: String,
creatorId: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
});
用户可能有很多评论。
因此,用户和评论是一对多的关系。
当用户创建新注释时,将创建一个新注释并将其ObjectId推送到用户注释数组。
我想做的是, 删除一个Comment时,会自动删除Comment的ObjectId。
我知道我可以通过两个查询来做到这一点。
反正有将这两者合二为一吗?
await user.comments.remove(comment.id);
await comment.remove();
答案 0 :(得分:2)
您不能在两个集合/模式上运行remove
,但是您可以利用Post Middleware并在CommentsSchema
上定义这样的中间件:
CommentsSchema.post('remove', function(comment) {
await UserSchema.update({ _id: comment.creatorId }, { $pull: { comments: comment._id } })
});