2017-07-18 2 views
1

Ich versuche zu validieren, dass die Daten, die ich zurückgegeben habe, es sinnvoll ist. Validieren von Datentypen ist abgeschlossen. Jetzt möchte ich bestätigen, dass ich alle Daten erhalten habe, die zur Ausführung einer Aufgabe benötigt werden.Validierung der referenziellen Integrität von Objekt-Arrays mit Joi

Hier ist ein repräsentatives Beispiel:

{ 
    "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 
      } 
      ] 
     } 
    ] 
    } 
} 

So jede Sektion Referenzen 0+ Dinge, und ich möchte bestätigen, dass jeder id Wert im Inhalt der Abschnitte zurück auch als id in Sachen existiert.

Die Dokumentation für Object.assert(..) bedeutet, dass ich eine konkrete Referenz brauche. Selbst wenn ich die Validierung innerhalb der Object.keys oder Array.items mache, kann ich die Referenz am anderen Ende nicht auflösen.

Nicht, dass es wichtig ist, aber mein Kontext ist, dass ich HTTP-Antworten innerhalb IcedFrisby, einem Frisby.js Fork validiere.

Antwort

0

Dies war nicht wirklich lösbar in der Art, wie ich fragte (d. H. Mit Joi).

Ich löste diese für meinen Kontext durch ein Plugin für icedfrisby Schreiben (veröffentlicht am npm here), die jsonpath jeden id in Inhalt und jeden id in Sachen zu holen verwendet. Das Plugin wird dann bestätigen, dass alle der ersten Menge innerhalb der zweiten existieren.

Verwandte Themen