2017-09-21 3 views
2

Hier ist mein JSON Schema:JSON Schema + relativ JSON-Zeiger: wie "Passwort bestätigen", um zu überprüfen Feld

{ 
    "required": [ 
    "username", 
    "password", 
    "confirmPassword" 
    ], 
    "properties": { 
    "username": { 
     "minLength": 3, 
     "type": "string" 
    }, 
    "password": { 
     "minLength": 6, 
     "type": "string" 
    }, 
    "confirmPassword": { 
     "const": { 
     "$data": "1/password" 
     }, 
     "type": "string" 
    } 
    }, 
    "type": "object" 
} 

Hier ist meine Daten:

{ 
    "username": "abc", 
    "password": "asdfasdf", 
    "confirmPassword": "asdfasdf" 
} 

Sie können mit denen in this online validator copy-paste Schau was passiert.

Die confirmPassword Feldvalidierung mit der Fehlermeldung fehlschlägt:

Value "asdfasdf" entspricht nicht konst.

Ich glaube, es gibt ein Problem mit meinem relative JSON pointer, aber ich kann nicht herausfinden, was die richtige Syntax ist.

AFAICT, 1/password bedeutet "gehen Sie eine Ebene nach oben, und überprüfen Sie dann die password Eigenschaft", aber das scheint nicht der Fall zu sein. Was ist korrekte Syntax?

Die spezifische Implementierung, die ich verwende, ist AJV, die es sagt tutsupport relative-JSON-pointers.

+0

@Amy Die Spezifikation, die Sie verknüpft haben, ist nur für * absolute * JSON-Zeiger, nicht wahr? – mpen

Antwort

3

Das einzige Problem war, dass ich vergessen habe, $data option auf true zu setzen. z.B.

const ajv = new Ajv({ 
    allErrors: true, 
    $data: true, 
}); 
Verwandte Themen