如何验证更新mongoose

时间:2017-08-23 09:03:00

标签: javascript node.js mongoose

我有这个架构:

没有验证更新。我哪里错了。请帮帮我

3 个答案:

答案 0 :(得分:0)

嗯。代码看起来很好,但请尝试删除$set运算符。更新Model时,它已默认启用。

此外,您正在更新阵列,这可能会导致一些问题。尝试使用markModified标志。

答案 1 :(得分:0)

如果您在验证之前插入了一些不遵循验证规则的条目,则Mongoose验证有时会失败。删除这些条目后,mongoose验证仍然无法正常工作。

我建议您删除数据库然后重试。它在大多数时候都有帮助。

答案 2 :(得分:0)

这个问题的许多解决方案 同样的事情分两步。

  1. 使用findOne()方法查找结果。
  2. 使用Model.save()添加字段并保存文档。
  3. B中。使用预更新挂钩

    Schema.pre('update', function(next) {
    // ps: pre-reserve this good practices 
    var self = this;
    // self refer to calling model. you got self.first_name with modified value, also allow self.modelMethod 
    // apply validation and go next      
      next();
    });
    

    ℃。 Mongoose 4.0更新

    正如评论和victorkohl的回答中所述,当你在更新调用中包含runValidators:true选项时,Mongoose现在支持验证$ set和$ unset运算符的字段。