首页 > 解决方案 > 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(),
});

标签: validationjoi

解决方案


我找到了解决方案:

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');

推荐阅读