Подтвердить что ты не робот

Mongoose: снятые документы

Как проверить, действительно ли удаляемый метод модели Mongoose удалил что-то?

MyModel.remove({_id: myId}, function(err, entry) {
  if(entry == null) next(new Error("ID was not found."));    // this doesn't work
}

Можно ли проверить, сколько документов было удалено?

В Mongo-Documentation kristina1 напишите в комментарии:

Если вы вызываете db.runCommand({getLastError: 1}) после удаления, а в поле "n" указывается, сколько документов было удалено.

Но я не знаю, как это сделать с Mongoose.

4b9b3361

Ответ 1

Mongoose < 4, MongoDB < 3

Второй параметр обратного вызова remove - это номер, содержащий количество удаленных документов.

MyModel.remove({_id: myId}, function(err, numberRemoved) {
  if(numberRemoved === 0) next(new Error("ID was not found."));
}

Mongoose 4.x, MongoDB 3.x

Второй параметр, переданный в обратный вызов remove, теперь представляет собой объект с полем result.n, указывающим количество удаленных документов:

MyModel.remove({_id: myId}, function(err, obj) {
  if(obj.result.n === 0) next(new Error("ID was not found."));
}

Ответ 2

Я пробовал это с последней версией мангуста, и это не сработало. Поскольку второй параметр возвращается как результат операции, а не просто счет. Используемый ниже, он работал:

 Model.remove({
            myId: req.myId
        }, function(err, removeResult) {
            if (err) {
                console.log(err);
            }
            if (removeResult.result.n == 0) {
                console.log("Record not found");
            }
            Console.log("Deleted successfully.");
        });