Podobnie jak w MongoDB 3.2, nie ma informacji zwrotnej na temat przyczyny niepowodzenia sprawdzania poprawności dokumentu: ogólne wyrażenie sprawdzania poprawności ma obecnie wartość Prawda („OK”) lub False („Sprawdzanie poprawności dokumentu”). Zachowanie sprawdzania poprawności można dostosować za pomocą opcji konfiguracyjnych validationAction
(błąd / ostrzeżenie) i validationLevel
(ścisłe / umiarkowane / wyłączone), ale nie zapewnia to dalszego kontekstu dla błędów sprawdzania poprawności.
Jeśli chcesz uzyskać bardziej szczegółowe informacje zwrotne, zalecanym podejściem byłoby dodanie logiki sprawdzania poprawności do aplikacji, a nie poleganie wyłącznie na kontrolach po stronie serwera. Nawet przy sprawdzaniu poprawności po stronie serwera, wiele sprawdzeń najlepiej jest wykonać w logice biznesowej aplikacji, aby zminimalizować liczbę podróży do serwera bazy danych w obie strony i zapewnić bardziej responsywne informacje zwrotne dla użytkownika końcowego.
Na przykład dane wprowadzone przez użytkownika dla aplikacji internetowej (wymagane pola, formaty pól, ...) powinny zostać sprawdzone w przeglądarce przed przesłaniem ich do aplikacji lub próbą wstawienia / aktualizacji w bazie danych.
Jednak sprawdzanie poprawności na wielu poziomach ma sens, aby zapewnić jakość danych, a pewien kontekst do diagnozowania błędów sprawdzania poprawności byłby bardzo przydatny. Istnieje odpowiednie otwarte żądanie funkcji, które można oglądać / głosować w górę w narzędziu do śledzenia problemów MongoDB: SERVER-20547: Podaj przyczynę niepowodzenia weryfikacji dokumentu .
Aby uzyskać więcej informacji, możesz być także zainteresowany sprawdzaniem poprawności dokumentów - Część 1: Dodawanie odpowiedniej kontroli nad dokumentami . Podkreśla to niektóre ogólne zalety i wady sprawdzania poprawności dokumentów, jak w MongoDB 3.2, i zawiera tabelę referencyjną wyników opartych na opcjach validationAction
i validationLevel
opcjach konfiguracji.
mongo-schemer
Node.js, który opiera się na AJV (Another JSON Schema Validator) .Oczywiście oryginalna odpowiedź jest prawidłowa, obsługa sprawdzania poprawności przed dotarciem do bazy danych jest absolutnie najlepszą praktyką, ale w praktyce, jeśli chcesz ją teraz ścigać, możesz tymczasowo usunąć sprawdzanie poprawności ze schematu, a następnie zobaczyć, co pokazuje w kolekcji.
Jeśli pole było wymagane, ale pokazuje brakujące, puste lub zniekształcone przynajmniej zawęża wyszukiwanie. Jeśli dane wyglądają poprawnie, spójrz na weryfikacje określone w schemacie.
źródło