【发布时间】:2020-12-13 17:00:23
【问题描述】:
MongoDB 集合/文档:
{
_id:something,
name:something,
todos: [
{key:1234},
{key:5678}
]
}
我想使用 mongoose 查询删除带有 key:5678 的对象。我做了这样的事情,但它根本没有删除对象并返回未更改 todos 数组的用户。
节点路由:
router.post('/:action', async (req, res) => {
try {
if (req.params.action == "delete") {
const pullTodo = { $pull: { todos: { key: 5678 } } }
const todo = await User.findOneAndUpdate({ _id:req.body.id} },pullTodo)
if (todo) {
res.json({ msg: "Todo Deleted", data: todo });
}
}
} catch (err) {
console.log(err)
}
})
我也尝试过 findByIdAndUpdate(),update() 方法,但它们都没有从数组中删除对象。结果获取用户而不从数组中删除对象。
【问题讨论】:
-
“它不起作用”是一种观点,而不是问题陈述。 发生了什么,您认为它不起作用?有错误吗? (如果是,显示错误)。日志显示发生了什么? (显示与您的通话相关的部分日志)。你甚至查询了正确的数据库吗? (显示minimal reproducible example 表明您至少已经掌握了基础知识)。有效:记得阅读how to ask a good question 上的政策文章,并尽可能地更新您的帖子。