【发布时间】:2016-07-07 02:19:53
【问题描述】:
我有一个对象数组,它们代表我的端点的有效输入组合:
const portfolios = [
{ "name": "portfolioA", "product": "productA" },
{ "name": "portfolioB", "product": "productB" },
{ "name": "portfolioB", "product": "productC" },
{ "name": "portfolioC", "product": "productD" },
...
]
例如,用户可以使用“productA”而不是“productB”请求“portfolioA”,或者他们可以使用“productB”或“productC”请求“portfolioB”。
我将得到的输入将如下所示:
portfolio: {
name: "portfolioA",
product: "productA"
}
我希望能够以编程方式对照“投资组合”中的有效对象检查此对象。我认为这可以使用Joi.object().valid(portfolios) 完成,但验证失败。
我可以使用 when() 使用下面的模式手动检查其中的每一个,但是投资组合数组可以更改,我不想每次都更改验证代码。我宁愿只给它一个有效对象的数组。
portfolio: {
name: Joi.string().required(),
product: Joi.string().required()
.when('name', { is: Joi.string().valid('portfolioA'), then: Joi.string().valid('productA') })
.when('name', { is: Joi.string().valid('portfolioB'), then: Joi.string().valid(['productB', 'productC']) })
}
附带说明,当验证失败时,我看到的是这个而不是字符串表示。
\"portfolio\" must be one of [[object Object], [object Object], [object Object], [object Object], [object Object]
有没有什么方法可以用 Joi 对照一组对象来检查对象?
【问题讨论】:
标签: javascript joi