Joi-Validierung gibt nur eine Fehlermeldung zurück

9

Ich habe ein Formular mit drei Feldern, das aus einem Namensfeld, einem E-Mail-Feld und einem Textfeld besteht. Ich benutze Joi 4.7.0 Version zusammen mit hapijs. Ich benutze das Objekt unten, um die Eingabe zu validieren. Ich erhalte das Datenobjekt von einem Ajax-Aufruf. Wenn ich alle drei Felder mit falschen Informationen fülle, bekomme ich nur die Nachricht bezüglich des ersten falschen Feldes. So:

%Vor% %Vor%

Zur Erklärung nehmen wir an, das drei Feld nicht zu füllen. Ich bekomme nur einen Nachrichtenfehler und nicht den Nachrichtenfehler der anderen Felder. Warum?

    
Mazzy 20.09.2014, 22:41
quelle

3 Antworten

18

Das passiert, weil Joi standardmäßig vorzeitig abbricht.

  

abortEarly - wenn true , stoppt die Validierung beim ersten Fehler, andernfalls werden alle gefundenen Fehler zurückgegeben. Der Standardwert ist true .

* EDIT: Die Konfiguration hat sich in hapi 8.0 geändert. Sie müssen abortEarly: false zur routes config:

hinzufügen %Vor%

* Weitere Informationen finden Sie in der Joi API-Dokumentation mehr Details.
* Siehe auch validation unter Hapi-Routenoptionen .

Also stoppt Joi die Validierung beim ersten Fehler:

%Vor%

Ausgaben:

%Vor%

Sie können Hapi jedoch so konfigurieren, dass alle Fehler zurückgegeben werden. Dazu müssen Sie abortEarly auf false setzen. Sie können dies in der Serverkonfiguration tun:

%Vor%

Wenn Sie das Skript jetzt ausführen, erhalten Sie:

%Vor%     
Gergo Erdosi 21.09.2014, 07:06
quelle
4

Der Schlüssel validation funktioniert nicht mehr mit dem Konstruktor Hapi.Server in Hapi 8.0:

  

[1] Validierung ist nicht erlaubt

Ich fand die Lösung in einem GitHub-Problem für hapi :

%Vor%     
chris van 22.12.2014 23:50
quelle
3

Ich integriere nicht mit hapi.js, aber ich habe festgestellt, dass es ein ValidationOptions -Objekt gibt, das weitergegeben werden kann. In diesem Objekt befindet sich die Option abortEarly , also sollte dies funktionieren:

Joi.validate(request, schema, {abortEarly: false}

Dies kann auch wie folgt konfiguriert werden:

%Vor%

Sehen Sie sich diese Typdefinitionen für weitere ValidationOptions an: Ссылка

    
Stephen Paul 26.04.2017 08:08
quelle

Tags und Links