【问题标题】:How to create a new reusable custom validator如何创建新的可重用自定义验证器
【发布时间】:2021-04-13 17:16:48
【问题描述】:

有没有办法创建一个验证器方法以在不同的地方重用?

目前,我有一个带有一些逻辑的自定义验证器,但我在其他验证器上重复该逻辑,我想知道是否有办法创建自定义方法以避免重复这样的代码。

这就是我在一些验证器中所拥有的:

const exampleValidator = [
    body().custom((value) => {
        allowed = ['param1', 'param2', 'param3', ...];
        /**
           bunch of logic to allow certain fields...
        */
        
    }),
    body('parameter', 'invalid parameter provided').isEmpty()
];

注意:此自定义验证器仅允许在请求中发送某些字段。给定一个数组,自定义验证器检查是否发送 request 只包含允许的字段。

我想要什么:我想知道是否有一种方法可以创建一个自定义验证器来获得这样的东西:

const exampleValidator = [
    body().allowCertainFields(['field1', 'field2']),
    body('parameter', 'invalid parameter provided').isEmpty()
];

如果有办法,我不知道在哪里可以创建这个allowCertainFields() 自定义方法无需修改 express-validator 的任何核心文件

因为另一种方法是这样做:

const exampleValidator = [
    body().custom((value) => {
        allowed = ['param1', 'param2'];
        return allowCertainFields(value, allowed);
        
    }),
    body('parameter', 'invalid parameter provided').isEmpty()
];

但首先我想知道我想做的事情是否可行。

【问题讨论】:

    标签: javascript express-validator


    【解决方案1】:

    您可以在任何地方,甚至在其他模块中创建验证器函数并将它们导入到位,并将它们作为参数传递给body().custom()

    类似:

    const create = (allowed) => {
      return (value) => {
        /**
           bunch of logic to allow certain fields...
        */
        return true;
      }
    }
    const allowCertainFields = create(['field1', 'field2']);
    
    const exampleValidator = [
      body().custom(allowCertainFields),
      body('parameter', 'invalid parameter provided').isEmpty()
    ];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 2013-11-11
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 2013-02-04
      相关资源
      最近更新 更多