Удалить 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));

Другие вопросы по тегам