node.js - findByIdAndDelete 带有 mongodb 和 mongoose 的子文档,( nodejs )
问题描述
我正在尝试删除我在非常深的嵌套架构中拥有的子文档...
我正在使用 findByIdAndUpdate 方法,但它没有删除子文档。
我的nodejs中有这个
//我假装删除数组“items”中的一个子文档
storeCtrl.deleteAlmacen = (req, res) => {
storeModel.findByIdAndDelete(req.params.id).then(() => {
res.json('deleted')
}).catch((err) => {
res.json(err)
})
}
这是我的架构
// 我没有复制和粘贴,所以可能有一些语法错误
{
"_id" : ObjectId("5c6cd20f13f0940e0cc214c5"),
"store" : [
{
"_id" : ObjectId("5c6cd20f13f0940e0cc214c6"),
"office" : [
{
"_id" : ObjectId("5c6cd21f13f0940e0cc214c8"),
"items" : [
{
"_id" : ObjectId("5c6cd22e13f0940e0cc214cb"),
"pen" : "3",
"paperId" : "a4"
}
],
"employees" : [ ],
"work" : 1
}
]
}
]
}
我必须使用其他方法而不是 findByIdAndDelete 吗?
解决方案
看看这个解决方案:Update nested subdocument in Mongoose
长话短说,您应该使用单独的模型,所有这些模型都相互引用。改变你现在拥有的东西会很痛苦,但实际上它会变得更干净。
您应该有一个Store
引用模型的模型Office
和一个Office
引用模型的Items
模型
推荐阅读
- javascript - 直接访问云端提供的图像文件
- python - reg ex 允许数字的任意组合直到特定数字 python
- django - 如何通过Django中的字符串列表过滤查询集?
- java - 向用户询问起始值。将输出设置为每行显示 10 个值,然后开始新行
- django - Django 过滤器列表视图
- java - 如何使用 Java 异常访问 API 错误消息属性?
- google-app-engine - 应用引擎入口点的目的是什么?
- python - 获取 ValueError:使用 LSTM 和 GRU 创建 Stacking 集成时,估计器 Sequential 应该是回归量
- mongodb - 在 Mongodb $group 聚合阶段添加结构化属性
- firebase - Firebase 存储模拟器导入未定义