使用 joi 验证一个数组的长度与另一个数组的长度

问题描述 投票:0回答:2

有没有办法使用 joi 验证两个数组需要具有相同的长度?

这是一个例子:

Joi.object().keys({
  firstNames: Joi.array().items(Joi.string()).single(),
  lastNames: Joi.array().items(Joi.string()).single(),
});

如果这是可行的,它也应该匹配两个数组的长度,所以没有

firstName
缺少
lastName

感谢您的帮助!

javascript arrays joi
2个回答
5
投票

肯定有,看看

.assert()
。您可以使用它来比较对象中两个属性的值或属性。

对于您的示例,您可以这样做:

Joi.object().keys({
  firstNames: Joi.array().items(Joi.string()).single(),
  lastNames: Joi.array().items(Joi.string()).single(),
}).assert('firstNames.length', Joi.ref('lastNames.length'));

您还可以选择提供更有用的错误消息作为

.assert()
的第三个参数。


0
投票

array.length(limit)
的文档提到了这一点:

Joi.object().keys({
  firstNames: Joi.array().items(Joi.string()).single(),
  lastNames: Joi.array()
    .items(Joi.string())
    .single()
    .length(Joi.ref('firstNames.length')),
});
© www.soinside.com 2019 - 2024. All rights reserved.