【问题标题】:Waterline in SailsJS doesn't seem to catch unique constraintSailsJS 中的水线似乎没有捕捉到独特的约束
【发布时间】:2014-10-23 19:35:41
【问题描述】:

在 SailsJS 中,当我在模型上有一个属性时:

email: { type: 'email',  unique: true}

出于某种原因,Waterline 不会捕获重复项,但 Mongo 肯定会。它会引发 Mongo 错误,但 Waterline 从未使用 WLValidationError 捕获它。

有人遇到这个错误吗?我似乎无法让 WLValidationError 工作。

谢谢

【问题讨论】:

  • waterline 应该如何知道所有值?想象一下,您有多个实例正在运行……您需要捕获这些错误并做出相应的反应。
  • 我假设如果 mongo 响应错误,Waterline 会捕捉到该错误并以优雅的方式显示错误。它似乎与其他数据库级错误完全一样。相反,在重复键上,它只返回 mongo 错误。我假设因为水线在定义模型时允许字段上的“唯一”属性,所以它知道如何处理唯一性。这似乎是一个不完整的功能。

标签: php mongodb validation sails.js waterline


【解决方案1】:

我也遇到过这个问题,为了解决这个问题,我将它添加到了 User 模型中。我不喜欢这个实现,但它对我有用,没有其他方法。

beforeCreate: function(values, cb) {
    User.findOne({email : values.email}, function(err, user){
        if(user){
            return cb('E-mail address already existis');
        } else {
            cb();
        }
    });
}

文档在这里:

https://github.com/balderdashy/waterline#lifecycle-callbacks

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    相关资源
    最近更新 更多