我有这个架构:
没有验证更新。我哪里错了。请帮帮我
答案 0 :(得分:0)
嗯。代码看起来很好,但请尝试删除$set
运算符。更新Model时,它已默认启用。
此外,您正在更新阵列,这可能会导致一些问题。尝试使用markModified标志。
答案 1 :(得分:0)
如果您在验证之前插入了一些不遵循验证规则的条目,则Mongoose验证有时会失败。删除这些条目后,mongoose验证仍然无法正常工作。
我建议您删除数据库然后重试。它在大多数时候都有帮助。
答案 2 :(得分:0)
这个问题的许多解决方案 同样的事情分两步。
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运算符的字段。