【问题标题】:Mongoose: Documents aren't updatingMongoose:文档没有更新
【发布时间】:2015-10-21 16:21:22
【问题描述】:

我正在循环中查找 _id 的文档并更新每个文档中的布尔值:

db.items.findById(key, function(error, item) {

  item.flags.cake = false;

  item.update(function(error, zzz) {
    if(error) return next(error);
    console.log('output ',zzz);
  });    
});

但文件不会更新。 item 的猫鼬模式:

flags: {
    cake:Boolean
}

【问题讨论】:

  • 不应该是item.save吗?
  • next 来自哪里?此外,update 是异步操作,使用循环意味着您的 key 设置为循环的最后一个元素。因此我想只有最后一个元素会被更新?尝试创建一个在循环的每个循环中调用的函数:)

标签: node.js mongodb mongoose


【解决方案1】:

请改用 save() 方法,该方法使用一个回调,该回调将接收您可以使用的三个参数: 1) err 如果发生错误 2) item 这是保存的项目 3)numAffected在文档成功持久化到MongoDB时为1,否则为0。

Items.findById(key, function(error, item) {    
    item.flags.cake = false;

    item.save(function (err, item, numAffected) {
        if (err) console.log(err)
        console.log('output ', item);
    });    
});

作为流量控制的额外措施,save 将返回一个 Promise。

item.save().then(function(item) {
    console.log('output ', item);
});

【讨论】:

    猜你喜欢
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2015-02-19
    • 2021-10-23
    • 2014-06-12
    • 2012-11-01
    • 2015-10-04
    相关资源
    最近更新 更多