【发布时间】:2019-10-23 01:08:52
【问题描述】:
我正在尝试使用 mongoose 从文档中的数组中删除一个对象。
这是一个条目的示例:
{
_id: "12345",
folder: {
name: "Folder1",
files: [
{
fileName: "File 1",
fileID: "6789",
folderID: "12345"
}
],
active: true
}
}
这就是我目前正在做的从数组中删除文件的操作。 Attachment.unlink 是从 gridfs 文件存储中删除文件的原因。这部分代码有效。但是,我的对象不会从数组中删除。
router.delete("/filesystem/:id", (req, res, next) => {
Attachment.unlink(req.params.id, (error, attachment) => {
if (!attachment) return res.status(404);
if (error) return next(error);
Folder.findByIdAndUpdate(
{
_id: req.body.folderID
},
{
$pull: {
"folder.files": {
$elemMatch: { fileID: req.params.id }
}
}
},
{ multi: true, safe: true },
(error, folder) => {
if (error) return next(error);
return res.status(200).json({
folder
});
}
);
});
});
我也尝试使用update 而不是findByIdAndUpdate。 如何从数组中删除fileID 为6789 的对象?
【问题讨论】:
-
也尝试过强制转换类型objectID
mongoose.Types.ObjectId(req.params.id) -
您的子文档有
_ids 吗?如果是这样,您可以这样做folder.files.id(fileId).remove()。见mongoosejs.com/docs/subdocs.html#removing-subdocs -
他们没有
_ids 都是一个模式 -
你试过
$pull: { "folder.files": { fileID: req.params.id } }而不是$elemMatch吗?
标签: javascript node.js mongodb mongoose