.validate()
验证给定属性的值是否有效,然后返回它,并进行松散的强制转换。
Something.validate(attrName, value);
这将验证(并可能强制转换)提供的數據,就像它是传递给
.update()
的值之一一样。你可以把它想象成一次“预演”。
# | 描述 | 接受的数据类型 | 必需? |
---|---|---|---|
1 | attrName | 要验证的属性名称。 | |
2 | value | 要验证/规范的值。 |
检查给定的字符串并返回一个规范化的版本。
注意,如果无法进行规范化,这将抛出一个错误。小心:您必须手动处理异步回调中抛出的任何错误。
User.validate('emailAddress', req.param('email'));
User.validate('password', req.param('password'));
.validate()
方法可以抛出您在调用 .update()
时可能遇到的任何使用错误。例如
try {
var normalizedBalance = BankAccount.validate('balance', '$349.86');
} catch (err) {
switch (err.code) {
case 'E_VALIDATION':
// => '[Error: Invalid `bankAccount`]'
_.each(e.all, function(woe){
sails.log(woe.attrName+': '+woe.message);
});
break;
default:
throw err;
}
}
- 这是一个同步方法,因此您不需要使用
await
、Promise 链或传统的 Node 回调。.validate()
作为单独的方法提供,以方便使用。您始终可以简单地调用.create()
或.update()
,而不是先调用.validate()
,因为这些模型方法会自动应用相同的检查。.validate()
在实现用例时非常有用,在这些用例中,重用您的模型验证以用于其他目的是有益的或更美观的(/DRY)。例如,您可能希望在与第三方 API(如 Mailgun 或 Stripe)通信之前验证一些不可信数据,或者您可能只是想在最初运行某些模型验证以使某些代码更容易理解。.validate()
不会与数据库通信,因此它只检测逻辑错误,例如类型安全错误和高级验证规则违规。它无法检测物理层约束(如唯一性)的问题,因为这些约束是由底层数据库检查的,而不是由 Sails 或 Waterline 检查的。