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

How to override error message in @hapi/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." } }

如何在 Validation Error.

details 数组中得到 fieldName 就像 name

我找到了如下解决方法。

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

你可以得到错误并像它一样处理


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
}

以下帮助方法

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