使用 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。然后插件将断言所有第一组都存在于第二组中。