从objectId数组中删除一个ObjectId

我有一个objectId是这样的: ["56153e4c2040efa61b4e267f","56033932efefe0d8657bbd9e"]要保存在我的模型中的信息,我使用:

 items: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Items' }] 

我想要做的是拉一个数组的元素,它等于我从​​前端发送的删除请求中的objectId。

我正在使用的代码:

 _.remove(unit.items, request.params.itemId); 

我正在使用lodash库。

我想这个问题是数组有ObjectId元素,我试图比较一个string是request.params.itemId。

我有一个非常类似的设置与“事件”对象,有一个“分配”对象数组保存为ObjectIds数组。 我能够简单地使用

 obj.arrayField.remove(idToRemove); 

这里是我的删除路由处理程序中的相关代码:

 var id = req.assignment._id; req.event.assignments.remove(id); req.event.save(function(err, event) { //etc } 

这对你有用吗?

 unit.items.remove(request.params.itemId); 

您需要将string传递给mongoose.Types.ObjectId('')以获取您可以比较的实际对象。

所以_.remove(unit.items, mongoose.Types.ObjectId(req.params.itemId));