Wie bei MongoDB 3.2 gibt es keine Rückmeldung über den Grund, warum die Dokumentvalidierung fehlgeschlagen ist: Der Gesamtvalidierungsausdruck wird derzeit entweder als wahr ("OK") oder falsch ("Dokument fehlgeschlagene Validierung") ausgewertet. Das Validierungsverhalten kann mit den Konfigurationsoptionen validationAction
(Fehler / Warnung) und validationLevel
(Streng / Mittel / Aus) angepasst werden. Dies bietet jedoch keinen weiteren Kontext für Validierungsfehler.
Wenn Sie detaillierteres Feedback erhalten möchten, empfiehlt es sich, Ihrer Anwendung eine Validierungslogik hinzuzufügen, anstatt sich ausschließlich auf serverseitige Überprüfungen zu verlassen. Selbst bei der serverseitigen Validierung lassen sich viele Überprüfungen am besten in der Anwendungsgeschäftslogik durchführen, um Roundtrips zum Datenbankserver zu minimieren und dem Endbenutzer ein reaktionsfähigeres Feedback zu geben.
Beispielsweise sollten Benutzereingaben für eine Webanwendung (erforderliche Felder, Feldformate, ...) im Browser überprüft werden, bevor sie an Ihre Anwendung gesendet werden oder versucht wird, sie in die Datenbank einzufügen / zu aktualisieren.
Es ist jedoch sinnvoll, auf mehreren Ebenen zu validieren, um die Datenqualität sicherzustellen, und ein gewisser Kontext zur Diagnose von Validierungsfehlern wäre sehr nützlich. Es gibt eine relevante Anforderung für offene Funktionen, die Sie im MongoDB-Issue-Tracker sehen / abstimmen können: SERVER-20547: Geben Sie den Grund an, warum eine Operation die Dokumentvalidierung nicht besteht .
Für weitere Informationen interessieren Sie sich möglicherweise auch für die Dokumentvalidierung - Teil 1: Hinzufügen genau der richtigen Kontrolle über Ihre Dokumente . Dies hebt einige der allgemeinen Vor- und Nachteile der Dokumentenvalidierung wie in MongoDB 3.2 hervor und enthält eine Referenztabelle für das Ergebnis basierend auf validationAction
und validationLevel
Konfigurationsoptionen.
mongo-schemer
für Node.js gesehen, das auf AJV (Another JSON Schema Validator) aufbaut .Natürlich ist die ursprüngliche Antwort richtig. Die Handhabung der Validierung vor dem Erreichen der Datenbank ist absolut empfehlenswert. Wenn Sie sie jedoch wie jetzt verfolgen müssen, können Sie die Validierung vorübergehend aus dem Schema entfernen und dann sehen, was angezeigt wird in der Sammlung.
Wenn ein Feld erforderlich war, es jedoch fehlt, leer oder unförmig ist, wird Ihre Suche zumindest eingeschränkt. Wenn die Daten richtig aussehen, sehen Sie sich die im Schema angegebenen Validierungen an.
quelle