我可以使用环回选项定义自定义验证吗?
Can I define a custom validation with options for Loopback?
是否有规定的方法可以在环回中创建自定义验证器?例如,假设我想创建如下内容:
Validatable.validatesRange('aProperty', {min: 0, max: 1000})
请注意,我知道:
Validatable.validates(propertyName, validFn, options)
我对 validates() 的问题是 validFn 无法访问这些选项。所以,我不得不硬编码这个逻辑;并为每个需要此类验证的 属性 创建一个自定义方法。这是不可取的。
同样,我熟悉的有:
Model.observes('before save', hookFn)
不幸的是,我什至没有办法为 hookFn() 声明选项。我没有这种特定需求(至少现在还没有)。这只是我探索的一条途径,作为解决我问题的可能替代方案。
如有任何建议,我们将不胜感激。提前致谢!
您要找的是validatesLengthOf()
。例如:
Validatable.validatesLengthOf('aProperty', {min: 0, max: 1000});
这里是文档链接:
All the methods of Validatable class 和
Model-wise validation.
在 https://docs.strongloop.com/display/public/LB/Validating+model+data
中提到了如何完成此操作
You can also call validate() or validateAsync() with custom validation
functions.
这会将您带到此页面 https://apidocs.strongloop.com/loopback-datasource-juggler/#validatable-validate
这提供了一个例子。
我自己试了一下...
Question.validate('points', customValidator, {message: 'Negative Points'});
function customValidator(err) {
if (this.points <0) err();
}
并且由于该函数名称在其他任何地方都没有真正使用,并且(在这种情况下)该函数很短,我还尝试了匿名函数:
Question.validate('points',
function (err) { if (this.points <0) err(); },
{message: 'Question has a negative value'})
当点数小于零时,它会抛出如下所示的验证错误。
{
"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"
]
}
是否有规定的方法可以在环回中创建自定义验证器?例如,假设我想创建如下内容:
Validatable.validatesRange('aProperty', {min: 0, max: 1000})
请注意,我知道:
Validatable.validates(propertyName, validFn, options)
我对 validates() 的问题是 validFn 无法访问这些选项。所以,我不得不硬编码这个逻辑;并为每个需要此类验证的 属性 创建一个自定义方法。这是不可取的。
同样,我熟悉的有:
Model.observes('before save', hookFn)
不幸的是,我什至没有办法为 hookFn() 声明选项。我没有这种特定需求(至少现在还没有)。这只是我探索的一条途径,作为解决我问题的可能替代方案。
如有任何建议,我们将不胜感激。提前致谢!
您要找的是validatesLengthOf()
。例如:
Validatable.validatesLengthOf('aProperty', {min: 0, max: 1000});
这里是文档链接: All the methods of Validatable class 和 Model-wise validation.
在 https://docs.strongloop.com/display/public/LB/Validating+model+data
中提到了如何完成此操作You can also call validate() or validateAsync() with custom validation functions.
这会将您带到此页面 https://apidocs.strongloop.com/loopback-datasource-juggler/#validatable-validate
这提供了一个例子。
我自己试了一下...
Question.validate('points', customValidator, {message: 'Negative Points'});
function customValidator(err) {
if (this.points <0) err();
}
并且由于该函数名称在其他任何地方都没有真正使用,并且(在这种情况下)该函数很短,我还尝试了匿名函数:
Question.validate('points',
function (err) { if (this.points <0) err(); },
{message: 'Question has a negative value'})
当点数小于零时,它会抛出如下所示的验证错误。
{
"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"
]
}