Cli*_*ney 4 strongloop loopbackjs
是否有规定的方法在环回中创建自定义验证器?举个例子,假设我想创建类似的东西:
Validatable.validatesRange('aProperty', {min: 0, max: 1000})
Run Code Online (Sandbox Code Playgroud)
请注意我知道:
Validatable.validates(propertyName, validFn, options)
Run Code Online (Sandbox Code Playgroud)
我使用validates()的问题是validFn无权访问这些选项.所以,我被迫硬编码这个逻辑; 并为需要此类验证的每个属性创建自定义方法.这是不可取的.
同样,我熟悉:
Model.observes('before save', hookFn)
Run Code Online (Sandbox Code Playgroud)
不幸的是,我认为甚至无法为hookFn()声明选项.我没有这个特定的需求(至少,还没有).这只是我探索的一种途径,可以替代解决我的问题.
任何建议表示赞赏.提前致谢!
use*_*342 17
在https://docs.strongloop.com/display/public/LB/Validating+model+data上提到了如何执行此操作
您还可以使用自定义验证函数调用validate()或validateAsync().
这将引导您访问此页面https://apidocs.strongloop.com/loopback-datasource-juggler/#validatable-validate
这提供了一个例子.
我自己试了一下......
Question.validate('points', customValidator, {message: 'Negative Points'});
function customValidator(err) {
if (this.points <0) err();
}
Run Code Online (Sandbox Code Playgroud)
由于该函数名称并未在其他任何地方使用,并且(在这种情况下)函数很短,我也尝试使用匿名函数:
Question.validate('points',
function (err) { if (this.points <0) err(); },
{message: 'Question has a negative value'})
Run Code Online (Sandbox Code Playgroud)
当点小于零时,它会抛出下面显示的验证错误.
{
"error": {
"name": "ValidationError",
"status": 422,
"message": "The `Question` instance is not valid. Details: `points` Negative Points (value: -100).",
"statusCode": 422,
"details": {
"context": "Question",
"codes": {
"points": [
"custom"
]
},
"messages": {
"points": [
"Negative Points"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5902 次 |
| 最近记录: |