我有以下UserSchema
const userSchema = new Schema({
// Irrelevant properties
likedPrograms: [{type:Schema.Types.ObjectId, ref: 'Program'}],
});
我正在尝试通过此查询从该数组中删除程序
const updatedUser = await User.findOneAndUpdate({_id: req.params.id}, {$pull: {likedPrograms: {_id: programToRemove._id}}}, {new: true});
但是,这行代码的执行没有从数组中删除元素。异步/等待是否有问题?但是,如果我尝试使用回调来实现它,那我就不想在代码中使用回调,因为我不想遇到回调地狱。关于为什么不起作用的任何想法?
答案 0 :(得分:1)
异步等待或回调没有问题。如果您可以看一下自己的架构,则likedPrograms
内没有任何字段,这只是ObjectIds
的简单数组,而不是带有键值对的对象数组。
如果您采取这样的措施,那将奏效
likedPrograms: [{ _id: { type: Schema.Types.ObjectId, ref: 'Program' }}]