我有一个对象数组,它们代表端点输入的有效组合:
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 对照一组对象检查对象吗?