保存和更新时触发猫鼬唯一验证

时间:2020-09-12 17:46:53

标签: node.js mongodb mongoose

我有一个带有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方法而无需再次触发该验证程序?

谢谢。

1 个答案:

答案 0 :(得分:1)

我正在查找它,实际上发现了一个Stackoverflow线程here

我的基本理解:

虽然使用.save()总是会触发验证程序,但是另一方面,使用.update()不会触发(除非您在选项中指定了验证符)。

也许尝试使用更新代替? (我知道这不是100%的答案,只是试图提供帮助)

编辑:如前所述,您始终可以将特定的验证器添加到控制器中,而不是在模式中。