具有异步/等待的Mongodb $ pull无法正常工作

时间:2019-02-21 08:02:23

标签: arrays node.js mongodb asynchronous

我有以下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});

但是,这行代码的执行没有从数组中删除元素。异步/等待是否有问题?但是,如果我尝试使用回调来实现它,那我就不想在代码中使用回调,因为我不想遇到回调地狱。关于为什么不起作用的任何想法?

1 个答案:

答案 0 :(得分:1)

异步等待或回调没有问题。如果您可以看一下自己的架构,则likedPrograms内没有任何字段,这只是ObjectIds的简单数组,而不是带有键值对的对象数组。

如果您采取这样的措施,那将奏效

likedPrograms: [{ _id: { type: Schema.Types.ObjectId, ref: 'Program' }}]