arrays - 带有 async/await 的 Mongodb $pull 无法正常工作
问题描述
我有以下 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});
但是,这行代码在执行时并未从数组中删除元素。异步/等待有问题吗?但是,如果我尝试使用回调来完成它,它会起作用,但是我不喜欢在我的代码中使用回调,因为我不想遇到回调地狱。关于为什么这不起作用的任何想法?
解决方案
异步等待或回调没有问题。如果您可以查看您的架构,则您没有在 中获取任何字段likedPrograms
,它只是简单的数组,ObjectIds
不包含带有键值对的对象数组。
如果你采取这样的做法,它会奏效的
likedPrograms: [{ _id: { type: Schema.Types.ObjectId, ref: 'Program' }}]
推荐阅读
- c# - How to setup settings from a windows service at installation?
- mysql - SQL 查询获取 Freinds of Freinds(深度 3)
- tensorflow - tf.keras.Sequential() 中的 Add() 函数
- html - 在 MDL 中向网格/行添加标题的最佳方法是什么
- angular - 所有模块组件上的运行功能运行
- ios - 安装在颤振模块中的软件包未找到模块问题(添加到应用程序)
- c++ - 使用 VS Code 集成控制台进行 C++ 调试
- mongodb - $add 仅支持数字或日期类型,不支持数组在 Mongoose 中递增时出错
- javascript - Jquery循环比较没有得到预期的结果
- javascript - 在 React 的组件构造函数中传递函数