假设我已经定义了以下自定义验证器函数:
isUnique: function () { // This works as expected
throw new Error({error:[{message:'Email address already in use!'}]});
}
然而,当我尝试查询DB时,我遇到了问题:
isUnique: function (email) { // This doesn't work
var User = seqeulize.import('/path/to/user/model');
User.find({where:{email: email}})
.success(function () { // This gets called
throw new Error({error:[{message:'Email address already in use!'}]}); // But this isn't triggering a validation error.
});
}
如何在自定义验证器中查询ORM并根据ORM的响应触发验证错误?
6条答案
按热度按时间vatpfxk51#
您可以像这样验证电子邮件是否已经存在:
1aaf6o9v2#
下面是一个功能
isUnique
验证回调的简化示例(SequelizeJS v2.0.0)。我添加了注解来解释重要的部分:9njqaruj3#
使用Sequelize 2.0,您需要捕获验证错误。
首先,使用自定义验证器定义用户模型:
然后,在控制器中捕获任何验证错误:
flseospp4#
即使没有找到用户,也会调用成功回调。你必须检查函数是否将用户作为参数传递:
q43xntqr5#
使用自定义验证器定义用户模型:
ki0zmccv6#
对于那些已经在数据库中声明了约束,并且已经使用squelize-auto生成了表模型的人来说,替换以下内容就足够了:
与: