Mongoose 从架构 arr 中删除对象 [重复]
Posted
技术标签:
【中文标题】Mongoose 从架构 arr 中删除对象 [重复]【英文标题】:Mongoose remove object from a Schema arr [duplicate] 【发布时间】:2018-01-25 16:50:56 【问题描述】:您好,我正在尝试使用 Mongoose 从我的模型中删除一个数组,但它似乎不起作用。我想从 collectionImages
中删除一个对象。这是我的代码:
架构
var CollectionSchema = mongoose.Schema(
collectionName: String,
collectionImages: [
imageName: String,
],
path: String
);
删除方法:
router.delete("/collection/:id/:imageId", function (req, res)
var imageId = req.params.imageId;
Collections.findById(req.params.id, function (err, collections)
if (err)
console.log(err);
else
for (var i = 0; i < collections.collectionImages.length; i++)
if (collections.collectionImages[i]._id == imageId)
var checkedImageId = collections.collectionImages[i]._id;
collections.collectionImages[i].splice(imageId,1);
;
;
);
);
形式:
<form id="deleteForm" action="/collection/<%= collections._id %>/<%= image._id %>?_method=DELETE" method="post">
<button class="fa fa-minus-circle">Delete</button>
</form>
【问题讨论】:
@ Neil Lunn 是的,我看到它是一样的,但是提供的解决方案也对我不起作用。我希望有更多经验的人可以帮助我 【参考方案1】:试试下面的
Collections.update(
_id: req.params.id ,
$pull: 'collectionImages': '_id': req.params.imageId
).exec(function (err, user)
if (err) res.status(500).send(err); return;
res.send();
);
更多信息请阅读this
【讨论】:
Hy @nmanikiran 我试过了,我没有收到 500 错误,但对象仍然存在。 它成功了,我不得不将路由器和 _method 更改为 PUT。坦克@nmanikiran以上是关于Mongoose 从架构 arr 中删除对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章