【问题标题】:Pass two values ​to custom validation with express-validation使用 express-validation 将两个值传递给自定义验证
【发布时间】:2022-04-12 08:51:41
【问题描述】:

我需要接收两个值来使用文档的主 ID 搜索子文档,然后使用子文档的另一个 ID。

我通过参数接收这些 ID,并使用 express-validator 我正在使用自定义函数来验证它们是否以这种方式存在:

router.put('/:id/item/:idItem',   
    [        
        check('id','idItem').custom( idItemExists )
    ],
    validation,
    updateItem 
);

在名为 idItemExists() 的函数中,我尝试接收这两个值,但第二个值在传递到控制台时会返回来自请求的所有内容:

let idItemExists = async ( id, idItem ) => { 
    console.log(idItem);
}

在这种情况下,我需要能够正确接收这两个值,以验证两个 ID 是否正确。

非常感谢。

【问题讨论】:

    标签: javascript node.js express express-validator


    【解决方案1】:

    这将不起作用,因为.custom 采用了一个函数,该函数接收正在验证的字段的值,以及docs 中提到的快速请求、位置和字段路径。

    validator(value, { req, location, path })
    

    在您的情况下,您正在尝试记录包含请求、位置和路径的对象。

    为了在自定义验证器中获取这两个值,您可以执行以下操作:

     param() // when we omit fields, then we're getting all fields inside req.params
        .custom(params => { // here we ignore the second parameter { req, location, path }
            console.log(params) // { id: '10', idItem: '20' }
        })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多