使用 Joi 验证对象数组的引用完整性
Validate referential integrity of object arrays with Joi
我正在尝试验证返回的数据是否合理。验证数据类型已完成。现在我想验证我是否收到了执行任务所需的所有数据。
这是一个代表性的例子:
{
"things": [
{
"id": "00fb60c7-520e-4228-96c7-13a1f7a82749",
"name": "Thing 1",
"url": "https://lolagons.com"
},
{
"id": "709b85a3-98be-4c02-85a5-e3f007ce4bbf",
"name": "Thing 2",
"url": "https://lolfacts.com"
}
],
"layouts": {
"sections": [
{
"id": "34f10988-bb3d-4c38-86ce-ed819cb6daee",
"name": "Section 1",
"content:" [
{
"type": 2,
"id": "00fb60c7-520e-4228-96c7-13a1f7a82749" //Ref to Thing 1
}
]
}
]
}
}
所以每个部分都引用 0+ 个事物,我想验证部分内容中返回的每个 id
值也作为 id
存在于事物中。
Object.assert(..) 的文档暗示我需要一个具体的参考。即使我在 Object.keys 或 Array.items 中进行验证,我也无法在另一端解析引用。
这并不重要,但我的上下文是我正在 IcedFrisby 中验证 HTTP 响应,一个 Frisby.js 分支。
这并不能按照我要求的方式真正解决(即使用 Joi)。
我通过为 icedfrisby 编写一个插件(在 npm here 上发布)解决了这个问题,它使用 jsonpath 获取内容中的每个 id
和事物中的每个 id
。然后插件将断言所有第一组都存在于第二组中。
我正在尝试验证返回的数据是否合理。验证数据类型已完成。现在我想验证我是否收到了执行任务所需的所有数据。
这是一个代表性的例子:
{
"things": [
{
"id": "00fb60c7-520e-4228-96c7-13a1f7a82749",
"name": "Thing 1",
"url": "https://lolagons.com"
},
{
"id": "709b85a3-98be-4c02-85a5-e3f007ce4bbf",
"name": "Thing 2",
"url": "https://lolfacts.com"
}
],
"layouts": {
"sections": [
{
"id": "34f10988-bb3d-4c38-86ce-ed819cb6daee",
"name": "Section 1",
"content:" [
{
"type": 2,
"id": "00fb60c7-520e-4228-96c7-13a1f7a82749" //Ref to Thing 1
}
]
}
]
}
}
所以每个部分都引用 0+ 个事物,我想验证部分内容中返回的每个 id
值也作为 id
存在于事物中。
Object.assert(..) 的文档暗示我需要一个具体的参考。即使我在 Object.keys 或 Array.items 中进行验证,我也无法在另一端解析引用。
这并不重要,但我的上下文是我正在 IcedFrisby 中验证 HTTP 响应,一个 Frisby.js 分支。
这并不能按照我要求的方式真正解决(即使用 Joi)。
我通过为 icedfrisby 编写一个插件(在 npm here 上发布)解决了这个问题,它使用 jsonpath 获取内容中的每个 id
和事物中的每个 id
。然后插件将断言所有第一组都存在于第二组中。