Wie Sie auf Stichwort hinzufügen Nullable (oder allowNull) in Ajv?

Schrieb ich den folgenden code.

var ajv = new require('ajv');

ajv.addKeyword('allowNull', {
    type: 'null',
    metaSchema: {
        type: 'boolean'
    },
    compile: function(allowNullEnable, parentSchema) {
        return function(data, dataPath, parentData) {
            if (allowNullEnable) {
                return true;
            } else {
                if (parentSchema.type == 'null') {
                    return true;
                } else {
                    return data === null ? false : true;
                }
            }
        }
    }
});

var schema = {
  type: "object",
  properties: {
    file: {
      type: "string",
      allowNull: true
    }
  }
};

var data = {
   file: null
};

console.log(ajv.validate(schema, data)) //Expected true

Aber es funktioniert nicht. Wie schreibt man so eine Prüfung?

Selbst wenn die compile-Funktion gibt immer true zurück, das tut Sie immer noch nicht über die validation.

Den code getestet werden kann in der Node-sandbox:
https://runkit.com/khusamov/59965aea14454f0012d7fec0



One Reply
  1. 5

    Können Sie nicht überschreiben type Schlüsselwort. null ist eine separate Daten geben Sie im JSON-Format, so müssen Sie "type": ["string", "null"] in Ihrem schema, es gibt keine Notwendigkeit für die Verwendung einer benutzerdefinierten Schlüsselwort.

    • Ich brauche zwei Schlüsselwörter für die Swagger-format. Wie null-Werte zulässt und descriminator. Also muss ich diese in der form von Schlüsselwort. Das Schema kann nicht geändert werden.
    • Es kann getan werden, mit inline-Schlüsselwort, aber es ist ziemlich beteiligt. Siehe github.com/epoberezkin/ajv/issues/486
    • Ich lese die Ausgabe. Wenn ich das richtig verstehe, gibt es keine Lösung und wird es nicht sein?
    • Es kann getan werden, mit inline-Schlüsselwort und das geht nur in allErrors: true-Modus. Sie können nicht ändern, geben validation-Prozess, aber Sie kann zu analysieren und zu ändern gesammelten Fehler, in der gleichen Weise ajv-Fehler hat, so dass, wenn Typ-Validierung schlägt fehl, aber die Daten sind null und nullable: true, entfernen Sie die Fehler.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.