问题
Is there a way to validate that two arrays need to have the same length using joi?
Here's an example:
Joi.object().keys({
firstNames: Joi.array().items(Joi.string()).single(),
lastNames: Joi.array().items(Joi.string()).single(),
});
If that was to work, it should also match both array's length so no firstName
lacks a lastName
.
Thanks for the help!
回答1:
There certainly is, take a look at .assert(). You can use it to compare the values or attributes of two properties in your object.
For your example you can do this:
Joi.object().keys({
firstNames: Joi.array().items(Joi.string()).single(),
lastNames: Joi.array().items(Joi.string()).single(),
}).assert('firstNames.length', Joi.ref('lastNames.length'));
You can also optionally provide a more helpful error message as the third parameter of .assert()
.
来源:https://stackoverflow.com/questions/53127060/validating-an-arrays-length-against-another-arrays-length-using-joi