【问题标题】:Mongoose update not updating: { ok: 0, n: 0, nModified: 0 }Mongoose 更新未更新:{ ok: 0, n: 0, nModified: 0 }
【发布时间】:2019-03-13 23:12:16
【问题描述】:

我在 MongoDB 上有一个名为“permissions”的集合。 我想实现这样的简单更新:

let schema = new Schema({
    title: String
  });
  let Permissions = mongoose.model("Permission", schema);
  let permission = new Permissions();

  let query = {};
  let newValues = {
    $set: {
      title: "Yes"
    }
  };
  permission.updateOne(query, newValues, (err, docs) => {
    console.log(err); // null
    console.log(docs); // { ok: 0, n: 0, nModified: 0 }
    if (err) return cast.error(err);
    return cast.ok();
  });

但是我在docs 的控制台日志中收到{ ok: 0, n: 0, nModified: 0 }nullerr 的控制台日志中。

我做错了什么?

【问题讨论】:

  • 删除这个let permission = new Permissions();。无需创建新实例
  • 那行得通。我应该什么时候创建一个新实例?仅使用保存时?
  • 所以对代码进行了哪些更改......我也得到了 nModified: 0

标签: mongodb mongoose crud


【解决方案1】:

根据docs

模型是从 Schema 定义编译而来的精美构造函数。 一个 模型的实例称为文档。模特负责 从底层 MongoDB 数据库创建和读取文档。

所以您只需要在.save() 调用期间创建实例。其他操作(更新、读取、删除)应用于现有文档,因此无需创建实例。

【讨论】:

  • 我遇到了类似的问题:我的更新给了我 { n: 1, nModified: 0, ok: 1 }。我的元素已找到但未更新。这是因为我使用的是模式对象的实例,而不是模式本身。非常感谢。
猜你喜欢
  • 2019-07-15
  • 1970-01-01
  • 2019-10-12
  • 2019-05-23
  • 2018-04-11
  • 1970-01-01
  • 2020-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多