如何覆盖@ hapi / joi中的错误消息?

时间:2019-12-19 10:23:21

标签: node.js typescript express validation joi

我正在尝试覆盖Joi中的自定义错误消息。

假设我有一个如下的模式。

const joiSchema = Joi.object({
  name: Joi.string().required(), 
  email: Joi.string().email().required()
})
try{
    const schema = joiSchema.validateAsync(req.body);
}catch(error){
    error.details.map((detail) => {
        // customize error message
    });
}

我需要发送如下错误消息。

{ errors: { name: "Name is Required.", email: "Email is Required." } }

如何在fieldName的{​​{1}}数组中获得与name相似的details

3 个答案:

答案 0 :(得分:0)

我找到了以下解决方法。

const errors = [];
err.details.forEach((detail) => {
  const currentMessage = detail.message;
  detail.path.forEach((value) => {
    errors.push({ [value]: currentMessage });
  });
});

答案 1 :(得分:0)

您可以得到错误并像这样处理


catch(error){
     var data = data.details;
     var message = data[0].message;  // you can get other fields also like this
     var json={"status":"0","message":message,"data":{}}; // you can customize your json response
}

答案 2 :(得分:0)

以下方法也有帮助

    const errorList = [...errors];
    errors.forEach((error, index) => {
        const tmpError = { ...error };
        tmpError.message = "Your custom error message";
        errorList[index] = tmpError;
    });
    return errorList;