【发布时间】:2020-05-11 15:52:37
【问题描述】:
我有一组数据要验证:
{
"createUser": {
"isCustomer": true or false,
"data": {
"product": [ // sometimes array of object with id : 3
{
"id":46,
"sumInsured":"4562000",
},
{
"id":45,
"sumInsured":"8532000",
},
]
}
}
以下是我们需要验证的场景:
1) validate array of objects
2) isCustomer is mandatory when id is 45
3) isCustomer not allowed when id is 3
首先完成:
Joi.object({
data: Joi.array()
.items({
id: Joi.number().valid(3,45,46)
.required(),
sumInsured: Joi.string()
.required()
}),
})
我搜索了很多关于相同的内容,但仍然无法找到相同的解决方案。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
-
老实说 - 这是一个相当复杂的嵌套模式 - 坦率地说,缺乏对 SO 的关注 - 我可以将第 2 点和第 3 点模式分开以进行各自的验证,但将它们组合起来不值 25 分。 .
-
@DenisTsoi 我尝试了解决方案,但问题是我尝试使用 id 3、46。它仍然要求 isCustomer。所以我尝试删除 isCustomer。必需,但即使我们传递不同的产品 ID,它仍然可以通过。
-
您要求进行组合模式验证 - 这可能需要几个小时 - 老实说,这确实需要花费很多时间
-
@DenisTsoi 否未组合模式验证。仅当 id 为 45 时才强制设置 isCustomer,而不是当 id 为 3 或 46 时。
标签: javascript node.js hapijs joi