node.js - Joi 验证 对象内所需参数的错误消息

标签 node.js express joi

首先你好,

我使用 Node、Express 和 Mongoose 开发 API。我还使用 Joi 参数验证来验证我的参数,但是当对象内缺少必需的参数时,我遇到错误消息问题。

参见下面的示例:

我的param-validation.js

body: {
        nameBusiness: Joi.string().required(),
        street: Joi.string().required(),
        cityName: Joi.string().required(),
        zipCode: Joi.number().required(),
        account: Joi.object({
            birthday: Joi.number().required(),
            firstName: Joi.string().required(),
            lastName: Joi.string().required(),
            email: Joi.string().regex(/^[^\s@]+@[^\s@]+\.[^\s@]+$/).required(),
        }).required()
    }

我的问题是,当我发出没有“firstName”字段的请求时,错误是: “\”firstName\”是必需的,但我认为我不清楚错误应该是:“\”account.firstName\”是必需的

有人知道 Joi 如何显示此错误吗?

最佳答案

就您而言,默认消息将与您提到的相同。对于诸如“account.firstName”之类的完整路径,您必须在错误对象中查找路径键。

您可以在“validationErrorObject”中找到他的属性,例如:-

if(validationResult.error){
validationResult.error.details.forEach(function(error){
    if(error.path.length > 1){
        console.log(error.path.join("."));
    }else{
      console.log(error.path[0]);
    }    
});

}

关于node.js - Joi 验证 对象内所需参数的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50970962/

相关文章:

javascript - Joi 条件 .required()

javascript - Joi 自定义验证

joi - 如何管理自行创建的错误消息,而不是使用默认的庆祝 @hapi/joi 代码

node.js - NPM 安装包,包含多个包文件夹

javascript - 一个服务器文件中的多个 Node.js "Apps"坏习惯?

node.js - 使用来自另一个容器的容器化 chrome 二进制文件运行 puppeteer

javascript - Express.js : escape symbols (POST request)

node.js - NodeJS 监听一个域名的 HTTP 和 HTTPS

javascript - ES6 使用 --experimental-modules 在 Node 中导入

node.js - 如何异步使用jest.each