【问题标题】:Mongoose isModified and isNewMongoose isModified 和 isNew
【发布时间】:2020-07-02 03:16:34
【问题描述】:

我在不同的教程中看到过这个例子,我只是想知道为什么它适用于新文档。新文件是否被视为已修改?我们不应该使用this.isNew || this.isModified 而不仅仅是 isModified 吗?

  try {
      if (!this.isModified("password")) {
        return next();
      }
      let hashedPassword = await bcrypt.hash(this.password, 10);
      this.password = hashedPassword;
      return next();
  } catch (err) {
      return next(err);
 }
});

【问题讨论】:

    标签: javascript mongodb mongoose mongoose-schema


    【解决方案1】:

    关于这个的文档不是很清楚,所以让我们通过尝试来学习:

    schema.pre("save", async function(next) {
      console.log("password isModified: ", this.isModified("password"));
      console.log("isNew: ", this.isNew);
      next();
    });
    

    当我们创建一个新用户时,输出会是这样的:

    password isModified:  true
    isNew:  true
    

    所以我们看到this.isModified("password")true。所以我们可以理解this.isModified("password")对于新文档也是如此。

    【讨论】:

    • 是的,我看到了,但我不知道为什么会这样。这有点令人困惑,因为您有一种方法可以查看是否是新的。在我看来,IsModified 应该在新文档中返回 false。
    • @DiegoPerdomo 我同意你的看法,但猫鼬就是这样工作的,所以我们对此没有任何控制权。
    猜你喜欢
    • 2018-11-07
    • 2020-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多