Javascript 正在验证数组';s相对于另一个数组的长度';s长度使用joi

Javascript 正在验证数组';s相对于另一个数组的长度';s长度使用joi,javascript,arrays,joi,Javascript,Arrays,Joi,有没有一种方法可以使用joi验证两个数组需要具有相同的长度 下面是一个例子: Joi.object().keys({ firstNames: Joi.array().items(Joi.string()).single(), lastNames: Joi.array().items(Joi.string()).single(), }); 如果这是可行的,它还应该匹配两个数组的长度,这样就不会有firstName缺少lastName 谢谢你的帮助 当然有,看一看。可以使用它来比较对象中两

有没有一种方法可以使用joi验证两个数组需要具有相同的长度

下面是一个例子:

Joi.object().keys({
  firstNames: Joi.array().items(Joi.string()).single(),
  lastNames: Joi.array().items(Joi.string()).single(),
});
如果这是可行的,它还应该匹配两个数组的长度,这样就不会有
firstName
缺少
lastName


谢谢你的帮助

当然有,看一看。可以使用它来比较对象中两个特性的值或属性

对于您的示例,您可以执行以下操作:

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()

的第三个参数。在一些测试之后,我发现
{lastNames:'Jones'}
是有效的。你知道有什么方法可以修复这个错误吗?@Arkanoid这是因为你在使用修饰符。它将接受数组中的单个值,并在验证后将其转换为数组。哦,不,这实际上很好。我知道我们正在检查名字的长度是否与lastNames的长度匹配,但不是相反,因此如果名字为空,则检查不会运行,因此不会被检查。也许可以选择既按要求标记,也可以通过另一种方式进行检查。