从ObjectId数组中删除ObjectId

Remove an ObjectId from an array of objectId

本文关键字:ObjectId 删除 数组      更新时间:2023-09-26

我有一个对象ID,如下所示:["56153e4c2040efa61b4e267f","56033932efefe0d8657bbd9e"]为了在我的模型中保存这些信息,我使用:

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

我试图做的是从数组中提取一个元素,该元素等于我在删除请求中从前端发送的objectId。

我使用的代码:

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

我在使用lodash图书馆。

我想问题是数组有ObjectId元素,我正试图与request.params.itemId.

的字符串进行比较

我对一个"Event"对象有一个非常相似的设置,它有一个保存为ObjectId数组的"Assignment"对象数组。我可以简单地使用

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);

您需要将字符串传递到mongoose.Types.ObjectId('')中,以获得可以进行比较的实际对象。

因此_.remove(unit.items, mongoose.Types.ObjectId(req.params.itemId));