Javascript 如何强制一个属性仅在另一个属性为真时才出现?
我正在尝试使用Joi验证一个简单的对象。我定义的模式如下所示:Javascript 如何强制一个属性仅在另一个属性为真时才出现?,javascript,joi,Javascript,Joi,我正在尝试使用Joi验证一个简单的对象。我定义的模式如下所示: const singleReq = Joi.object({ subscribing: Joi.boolean(), duration: Joi.number().integer().positive(), }); 我希望duration仅在subscribing为true时出现(不为空)。我试图用资产来做这件事,但我不知道怎么做。您可以尝试以下方法: const singleReq = Joi.objec
const singleReq = Joi.object({
subscribing: Joi.boolean(),
duration: Joi.number().integer().positive(),
});
我希望
duration
仅在subscribing
为true时出现(不为空)。我试图用资产来做这件事,但我不知道怎么做。您可以尝试以下方法:
const singleReq = Joi.object({
subscribing: Joi.boolean(),
duration: Joi.number()
.when('subscribing', { is: true, then: Joi.integer().positive().required() })
});
如果您想要更改类型,您也可以尝试使用类似以下示例的替代方案:
const schema = {
a: Joi.alternatives().when('b', { is: 5, then: Joi.string(), otherwise: Joi.number() }),
b: Joi.any()
};
谢谢!这正是我所需要的!