Удалить ObjectId из массива objectId
У меня есть objectId, как это:["56153e4c2040efa61b4e267f","56033932efefe0d8657bbd9e"]
Чтобы сохранить эту информацию в моей модели, я использую:
items: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Items'
}]
Я пытаюсь извлечь элемент массива, равный objectId, который я отправляю из внешнего интерфейса в запросе на удаление.
Код, который я использую:
_.remove(unit.items, request.params.itemId);
Я использую библиотеку lodash.
Я полагаю, что проблема состоит в том, что в массиве есть элементы ObjectId, и я пытаюсь сравнить их со строкой request.params.itemId.
2 ответа
У меня очень похожая настройка с объектом "Событие", в котором есть массив объектов "Назначение", сохраненный как массив 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);
Вам нужно передать строку в mongoose.Types.ObjectId('')
чтобы получить реальный объект, с которым вы можете сравнить.
Так _.remove(unit.items, mongoose.Types.ObjectId(req.params.itemId));