【发布时间】:2020-09-16 21:46:55
【问题描述】:
我的架构有大约 3 个字段,这些字段有几个条件,具体取决于谁在场:
-
successUrl 不能在没有 ** failUrl** 的情况下出现(反之亦然)
-
如果 succesUrl 和/或 failUrl 存在,则
responseUrl 不能存在
-
在架构中,如果 responseUrl 不存在,则必须存在 successUrl 和 failUrl 对(反之亦然)
我设法使前两个条件起作用,但是当 successUrl 不存在时,应该使 responseUrl 所需的“when”方法被某些人忽略原因,所以当没有违反我的第三个条件的successUrl、failUrl和responseUrl时,架构会进行验证。
const schema = Joi.object().keys({
transaction: Joi.string().max(60),
partner: Joi.string().regex(/^[0-9a-fA-F]{24}$/, 'Invalid partner ID').required(),
amount: Joi.number().min(1).required(),
responseUrl: Joi.string().uri().when('successUrl', { is: !Joi.exist(), then: Joi.string().uri().required() }),
successUrl: Joi.string().uri(),
failUrl: Joi.string().uri()
}).with('successUrl', 'failUrl').with('failUrl', 'successUrl').without('responseUrl', 'successUrl').without('responseUrl', 'failUrl');
我明显用错了,链接到reference。
【问题讨论】: