2017-08-11 3 views
0

J'utilise ajv pour valider certaines données JSON avant qu'elles ne soient écrites dans une base de données. Mes données de demande ressemble essentiellement comme celui-ci (comme exemple):ajv validate échoue avec le schéma correct "les données ne doivent PAS avoir de propriétés supplémentaires"

doc:

"name": "John", 
"id": "123-456-789" 

Cela est transmis au validateur ajv:

const validator: ajv.Ajv = this.getValidator(); 
validator.validate("Testschema.out", doc) 

C'est ce que Testschema.out ressemble

{ 
    "id": "Testschema.out", 
    "type": "object", 
    "allOf": [{ 
      "$ref": "anotherId#/definitions/someDefinition" 
     }, 
     { 
      "$ref": "Testschema" 
     } 
    ] 
} 

TestSchema détient ceci:

{ 
    "id": "Testschema", 
    "type": "object", 
    "properties": { 
     "name": { 
      "type": "string" 
     } 
    }, 
    "additionalProperties": false, 
    "required": [ 
     "name" 
    ] 
} 

Alors que someDefinition détient ceci:

{ 
    "id": "anotherId", 
    "type": "object", 
    "definitions": { 
     "someDefinition": { 
      "type": "object", 
      "properties": { 
       "id": { 
        "type": "string" 
       } 
      } 
     } 
    } 
} 

Cependant, la validation échoue, et l'erreur que je reçois est "data should NOT have additional properties" Plus précisément, quoi que ce soit dans le schéma « anotherId » pour une raison quelconque validation échoue. Si je devais ajouter la propriété "id" à Testschema, alors la validation passerait.

Répondre