Loopbackjs 我可以用环回选项定义自定义验证吗?

Loopbackjs 我可以用环回选项定义自定义验证吗?,loopbackjs,strongloop,Loopbackjs,Strongloop,有没有规定的方法在环回中创建自定义验证器?例如,假设我想创建如下内容: Validatable.validatesRange('aProperty', {min: 0, max: 1000}) 请注意,我知道: Validatable.validates(propertyName, validFn, options) validates()的问题是validFn没有访问选项的权限。所以,我被迫硬编码这个逻辑;并为需要此类型验证的每个属性创建自定义方法。这是不可取的 同样,我熟悉: Model

有没有规定的方法在环回中创建自定义验证器?例如,假设我想创建如下内容:

Validatable.validatesRange('aProperty', {min: 0, max: 1000})
请注意,我知道:

Validatable.validates(propertyName, validFn, options)
validates()的问题是validFn没有访问选项的权限。所以,我被迫硬编码这个逻辑;并为需要此类型验证的每个属性创建自定义方法。这是不可取的

同样,我熟悉:

Model.observes('before save', hookFn)
不幸的是,我甚至看不到为hookFn()声明选项的方法。我没有这种特殊的需要(至少,还没有)。这只是我探索的一条可能的解决问题的途径


任何建议都将不胜感激。提前谢谢

您要查找的是
validateLengthof()
。例如:

Validatable.validatesLengthOf('aProperty', {min: 0, max: 1000});
以下是文档链接: 及
.

您还可以通过自定义验证调用validate()或validateAsync() 功能

这将引导您进入此页面

这提供了一个例子

我自己试过了

  Question.validate('points', customValidator, {message: 'Negative Points'});
  function customValidator(err) {
    if (this.points <0) err();
  }

谢谢你的回复。不幸的是,这不是我需要的。例如,我使用了validateRange()的一个示例,该示例旨在验证值的最小和最大范围,而不是有效长度的范围。但是,请注意,我也不是在寻找那个特定的验证!我想要的是一种能够定义我自己的验证的方法,比如validateRange()。我发现的记录在案的方法都是有缺陷的(据我所知)。请看我原来的帖子。你考虑过在你的模型上使用吗?不太可能。这是我想做的一个例子。该函数用于验证某物的长度。如果我想验证值的范围(比如1到100之间的整数),该怎么办?但即便如此,这也只是代表性的。关键是,validateLengthof()显然可以访问options对象。我想写一个可验证的函数来实现同样的功能(即可以访问options对象)。谢谢你的回答。在这里,我不能提供任何帮助,只能同意这是非常令人沮丧的!谢谢你的回答。我已经做了标记,因为这是我不得不使用的方法。但你似乎没有抓住我最初问题的重点。这种方法的问题在于,它迫使您将逻辑硬编码到验证器中,从而消除了它的可重用性。如果在下一个应用程序或表单上的其他地方,您的最小值为5,该怎么办?您需要另一个函数。我只是一个梦想家/最纯洁的人。但是请注意如何将options对象传递到validate()?理想情况下,我可以访问函数中的对象。那会解决我的问题!
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"
        ]
      }