首页 > 解决方案 > Express Validator 中的自定义响应

问题描述

我正在使用 Express Validator 进行 Rest API 验证,这是我在控制器中的代码:

validate: function (method){
    switch (method) {
        case 'createPersonalInfo': {
            return [
                body('age').isInt().withMessage("Age should be integer")
            ]
        }
    }
},

它返回响应为:

{
    "status": 300,
    "messages": "Invalid Value",
    "param": {
        "errors": [
            {
                "value": "ABC",
                "msg": "Age should be integer",
                "param": "age",
                "location": "body"
            }
        ]
    }
}

我想自定义响应,如何删除字段"location:"。可能吗?我一直在寻找很多文章,但没有一篇关于它的文章。

标签: expressexpress-validator

解决方案


您可以使用validationResult().formatWith()函数为您的错误指定格式化程序:

const result = validationResult(req).formatWith(({ msg, param, value }) => ({
  msg,
  param,
  value
}));

您还可以创建一个validationResult()始终使用给定格式化程序的实例:

// Put it in a validation-result.js file somewhere in your project?
const myValidationResult = validationResult.withDefaults({
  formatter: ({ msg, param, value }) => ({
    msg,
    param,
    value
  })
});
const result = myValidationResult(req);

文档


推荐阅读