我有一个像这样的objectId:
["56153e4c2040efa61b4e267f","56033932efefe0d8657bbd9e"]
要在我的模型中保存该信息,我使用:
items: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Items'
}]
我尝试做的是从删除请求中拉出一个与前端发送的objectId相等的数组元素。
我使用的代码:
_.remove(unit.items, request.params.itemId);
我正在使用lodash库。
我认为问题是数组有ObjectId元素,我试图与一个字符串比较,即request.params.itemId。
答案 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));