代码之家  ›  专栏  ›  技术社区  ›  user1063287

findOneAndUpdate未返回原始文档

  •  1
  • user1063287  · 技术社区  · 6 年前

    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 是默认值,但是它记录的是更新的值,而不是原始值。

    编辑:

    问题出在代码的其他地方——上面的代码按预期工作。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Matiullah Karimi    6 年前

    默认情况下 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);
    
    }});
    
        2
  •  0
  •   user1063287    6 年前