findOneAndUpdate не возвращает исходный документ - PullRequest
0 голосов
/ 01 сентября 2018

Окружающая среда

node -v
v10.0.0
// native driver "mongodb": "^3.0.8",

Желаемое поведение

Я хочу обновить документ и вернуть исходный документ.

Фактическое поведение

Обновленный документ возвращается вместо исходного документа.

Что я пробовал

Первоначально я смотрел на findAndModify:

http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#findAndModify

однако документы там говорят, что это устарело и до use findOneAndUpdate, findOneAndReplace or findOneAndDelete instead.

Итак, я попробовал:

collection.findOneAndUpdate(filter, update, function(err, result) {
    if (err) {
        res.send(err);
    } else {

        // find object in array of objects ('statements') and return the 'text' property value
        var old_text = result.value.statements.find(x => x.id === "my_great_id").text;

        console.log(old_text);

    }
});

http://mongodb.github.io/node-mongodb-native/3.1/api/Collection.html#findOneAndUpdate

В документах сказано, что опция returnOriginal используется по умолчанию, однако она регистрирует обновленное значение, а не исходное значение.

Edit:

Проблема была в другом месте кода - приведенный выше код работает, как и ожидалось.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Проблема была в другом месте кода - код в исходном посте работает как положено.

0 голосов
/ 01 сентября 2018

По умолчанию функция findOneAndUpdate возвращает исходный документ. Но добавление {new: false} к третьему параметру функции findOneAndUpdate может работать в вашем случае.

collection.findOneAndUpdate(filter, update, {new: false}, function(err, result) {
  if (err) {
    res.send(err);
  } else {

    // find object in array of objects ('statements') and return the 'text' property value
    var old_text = result.value.statements.find(x => x.id === "my_great_id").text;

    console.log(old_text);

}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...