【发布时间】:2016-01-19 03:34:25
【问题描述】:
我有一个问题。
"Formula": {
"Type": "Import/Export",
"Params": {
"ShippingSourceType": "System/Country/Group",
ShippingDestinationType:"System/Country/Group"
}
}
我有上面的对象,我必须对类型进行验证。但Type 取决于参数中的ShippingSourceType 和ShippingDestinationType。
如果ShippingSourceType 是系统,那么Type 应该是Export。
如果ShippingDestinationType 是系统,那么类型应该是Import。
我已经验证了类型如下:
Type: joi.alternatives().required()
.when('Params.ShippingSourceType', { is: 'System', then: joi.string().valid('Export') })
.when('Params.ShippingDestinationType', { is: 'System', then: joi.string().valid('Import') })
但它没有用。你能建议如何解决这个问题吗?
【问题讨论】:
-
嗨,Bhushan,您能告诉我们您使用的是哪个版本的
joi?你也可以提供一个失败的例子,比如一个应该被验证但没有被验证的对象,或者一个不应该被验证但被验证的对象? -
@Almouro 我已经更新了我的问题。你能帮帮我吗?
-
我认为您的验证没有任何问题。我什至运行了small file validating some objects,它按预期进行了验证。我使用了最新版本的 Joi,又名
7.0.1。你用的是哪个版本? -
@Almouro 抱歉,当它不起作用时我忘了添加。如果 Shipping SourceType 和 ShippingDestinationType 都不是系统的,那么它应该允许 Type 采取 Import 或 Export。但在这种情况下,它给出了不匹配任何允许的替代方案,这是正确的,因为我没有提到它的条件。那么我应该设置什么条件来处理这种情况呢?
标签: javascript hapijs joi