如何使用 Joi 验证对象数组?

新手上路,请多包涵

我正在获取一组对象到后端,其中每个对象都包含一个服务名称。结构如下所示

[{"serviceName":"service1"},
{"serviceName":"service2"},..]

当我在后端获取数组时,我想验证数组中的每个对象都具有 serviceName 属性。

我编写了以下代码,但即使我传递了有效的数组,我也会收到验证错误。

 var Joi = require('joi');
var service = Joi.object().keys({
  serviceName: Joi.string().required()
});

var services = Joi.array().ordered(service);

var test = Joi.validate([{serviceName:'service1'},{serviceName:'service2'}],services)

对于上面的代码,我总是收到带有消息的验证错误

"value" at position 1 fails because array must contain at most 1 items

原文由 zakir 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

ordered 替换为 items 将起作用。

 let Joi = require('joi')
let service = Joi.object().keys({
  serviceName: Joi.string().required(),
})

let services = Joi.array().items(service)

let test = Joi.validate(
  [{ serviceName: 'service1' }, { serviceName: 'service2' }],
  services,
)

参考 点击这里

原文由 zakir 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题