如何为express-validator添加自定义链式值修改函数?
使用express-validator自定义参数值修改方法
当然可以实现,你需要用customSanitizer方法,而非用于验证的custom——trim、escape这类方法本质上属于参数清理器(sanitizer),customSanitizer就是express-validator提供的自定义清理逻辑的接口,专门用来修改参数值并覆盖原始来源。
示例代码如下:
route.post('/landing-pages/:link/blocks', [ param('link') .trim() .escape() .isString() .customSanitizer((value, { req, location, path }) => { // 在这里对参数值进行任意修改,返回修改后的结果即可 // 示例1:替换所有下划线为横杠 return value.replace(/_/g, '-'); // 示例2:移除特定前缀(比如"temp-") // return value.replace(/^temp-/, ''); // 示例3:转为全小写 // return value.toLowerCase(); }) ], controller.addBlocks);
说明:
customSanitizer的回调函数接收两个参数:当前的参数值,以及包含req(请求对象)、location(参数位置,比如param)、path(参数名,比如link)的上下文对象。- 你只需在函数内完成值的修改逻辑,返回修改后的结果,express-validator就会自动将这个结果替换掉原始的参数值。后续的验证步骤、控制器中获取的
req.params.link都会是修改后的值。
内容的提问来源于stack exchange,提问作者Reza Amya
相关产品推荐
相关产品推荐

