从objectId

时间:2015-12-16 01:29:10

标签: javascript node.js mongoose lodash

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

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

我尝试做的是从删除请求中拉出一个与前端发送的objectId相等的数组元素。

我使用的代码:

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

我正在使用lodash库。

我认为问题是数组有ObjectId元素,我试图与一个字符串比较,即request.params.itemId。

2 个答案:

答案 0 :(得分:3)

我有一个非常类似的设置,“Event”对象有一个“Assignment”对象数组,保存为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);

答案 1 :(得分:1)

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

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