Joi模式中的替代键组

时间:2018-10-17 19:43:53

标签: validation joi

在下面的模式中,我想要求它具有纬度/经度或北/东键。如何做到这一点,并在此之后将其他可选键添加到架构?我查看了xor,但似乎只支持单个键,而不支持键集。

const schema = Joi.alternatives().try({
    Northing: Joi.string().required(),
    Easting: Joi.string().required(),
}, {
    Lat: Joi.string().required(),
    Lon: Joi.string().required(),
});

1 个答案:

答案 0 :(得分:2)

我找到了解决方法:

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