使用Joi验证对象数组的引用完整性

时间:2017-07-18 07:57:25

标签: joi frisby.js

我试图验证我返回的数据是否明智。验证数据类型已完成。现在我想验证我已经收到了执行任务所需的所有数据。

这是一个有代表性的例子:

{
  "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分支。

1 个答案:

答案 0 :(得分:0)

这并没有按照我的要求(即与Joi)解决。

我通过编写icedfrisby插件(在npm here上发布)为我的上下文解决了这个问题,该插件使用jsonpath来获取Content中的每个id以及Things中的每个id。然后插件将断言所有第一组都存在于第二组中。