【问题标题】:Mongoose unique validation triggered when saving and update保存和更新时触发 Mongoose 唯一验证
【发布时间】:2020-12-30 22:20:15
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

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

    基本上我是怎么理解的:

    使用.save() 时,验证器始终会被触发,但另一方面,使用.update() 不会(除非您在选项中指定它)。

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

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

    【讨论】:

    • 这是一个选项,但我还有其他想要运行的验证器。
    • 您可以做的是 => 将您的电子邮件地址验证添加到您的控制器(例如快速路由)而不是 Schema,这样您就可以控制是否要保存新文档
    • 这就是我最终的结果.. :)
    • 总是感谢您的支持,因为我自己都不喜欢任何东西:D
    猜你喜欢
    • 2015-03-30
    • 2018-06-29
    • 2020-05-13
    • 2018-07-17
    • 2014-06-28
    • 1970-01-01
    • 2020-04-13
    • 2016-11-17
    • 2014-08-20
    相关资源
    最近更新 更多