validation - Joi 模式中的替代键组
问题描述
在下面的模式中,我想要求它具有 Lat/Lon 或 Northing/Easting 键。如何做到这一点,并在这些之后向模式添加其他可选键?我查看了xor,但它似乎只支持单个键,而不是键集。
const schema = Joi.alternatives().try({
Northing: Joi.string().required(),
Easting: Joi.string().required(),
}, {
Lat: Joi.string().required(),
Lon: Joi.string().required(),
});
解决方案
我找到了解决方案:
const schema = Joi.object().keys({
Northing: Joi.string(),
Easting: Joi.string(),
Lat: Joi.string().when('Northing', {
is: Joi.string().required(),
then: Joi.string(),
}),
Lon: Joi.string().when('Easting', {
is: Joi.string().required(),
then: Joi.string(),
}),
}).xor('Northing', 'Lat').xor('Easting', 'Lon');
推荐阅读
- git - Git 获取差异作为本地更改
- java - 我在这里的输入不需要区分大小写。我会告诉你我的代码请帮忙,我对如何做到这一点一无所知
- verilog - JK Flip Flop 的验证显示不正确的结果
- clojure - 解决来自 Leiningen 的 GitLab 的私有依赖项
- wordpress - 隐藏第一部分
- laravel - 如何在 laravel 中对控制器进行单元测试?
- vue.js - 具有不同元素标签的Vue3“v-is”组件
- javascript - 在 redux 工具包状态中更改数组中的特定元素
- arrays - 在列中查找值并根据条件更改结果
- python - 从数据框获取项目 A 的第一个订单与前一个订单之间的天数,前一个订单可以是项目 A 或不同的项目