自定义响应Express Validator作为JSON

时间:2019-07-15 20:43:48

标签: node.js express response httpresponse

我正在使用 Express Validator 来验证用户要求。我正在尝试创建这样的自定义响应:

{
    "code": 300,
    "status": false,
    "message": "Your email is not valid",
    "param": "email",
    "value": "kevin"
}

但是我得到的是

[
    {
        "code": 300,
        "status": false,
        "message": "Your email is not valid",
        "param": "email",
        "value": "kevin"
    }
]
这是我的代码:

controller.js:

const errors = validationResult(req).formatWith(utils.error);
if(!errors.isEmpty()){

    res.status(300).json(errors.array());
}

ResUtils.js

error({msg, param, value, nestedErrors}) {
    var code = 300;
    var format = {code, status:false, message:msg, param:param, value:value, nestedErrors:nestedErrors};
    return format;
}

如何在没有[]的情况下以Json的身份获得响应。

谢谢。

1 个答案:

答案 0 :(得分:0)

好吧,我认为这种状态很好,有可能出现多个错误,因此您应该在前端应用程序(或移动设备或任何其他设备)中处理所有消息,以向用户提供有关所有无效字段(或选项或任何内容)的信息。如果确实只需要一个对象,则可以从数组中选择第一个错误消息。

if(!errors.isEmpty()){
    const errorsArray = errors.array();
    res.status(300).json(errorsArray[0]);
}

但是正如我所说的,处理所有错误消息是更好的方法。