我有一个带有unique: true
和以下验证程序的用户架构:
{ // checks if email already used
validator: async (value) => {
let user = await mongoose.model('User').findOne({ email: value });
return !user;
},
message: 'Email already exists'
}
创建新用户时,它可以按预期工作,问题在于更新。
我正在使用doc.save()
更新用户文档(根据Mongoose文档,这是更新文档的有效方法)。但该验证器又被触发了。
有没有一种方法可以使用save
方法而无需再次触发该验证程序?
谢谢。
答案 0 :(得分:1)
我正在查找它,实际上发现了一个Stackoverflow线程here。
我的基本理解:
虽然使用.save()
总是会触发验证程序,但是另一方面,使用.update()
不会触发(除非您在选项中指定了验证符)。
也许尝试使用更新代替? (我知道这不是100%的答案,只是试图提供帮助)
编辑:如前所述,您始终可以将特定的验证器添加到控制器中,而不是在模式中。