Jak używać niestandardowych walidatorów Mongoose

wprowadzenie

zawsze zaleca się sprawdzanie schematu. Walidacje poprawiają strukturę bazy danych i zapobiegają wstawianiu do niej złych danych. Mongoose zapewnia kilka wbudowanych walidatorów, takich jak wymagane, minlength, maxlength, min i max. Te wbudowane walidatory są bardzo przydatne i proste w konfiguracji. Ale walidacje w mongoose nie są ograniczone tylko do wbudowanych walidatorów. Możemy również tworzyć własne walidacje. W tym artykule omówimy, jak tworzyć własne walidatory Mangusta.

Definiowanie schematu bez walidacji

mamy zbiór szczegółów i jest to schemat zdefiniowany dla niego.

1
2
3
4
5
6
7
8
9
10
11
let details = new Schema({
name: {
type: String
},
age: {
type: Number
},
locations: {
type:
}
});

Obserwuj trzecie pole, tj. lokalizacje. Jego typem jest tablica łańcuchów. Na razie nie ma żadnych weryfikacji. Oznacza to, że podczas wstawiania dokumentów do tej kolekcji możemy pominąć dowolne z tych pól, a nawet pominąć wszystkie z nich. Spróbujmy wstawić pusty dokument używając powłoki mongo.

1
2
3
> db.szczegóły.insert ({})
WriteResult ({„ninsert” : 1 })
>

tutaj przekazaliśmy pusty obiekt i jest on wstawiany do kolekcji. Ale czy to prawda? Jaki jest sens tego dokumentu? Dlatego mamy potwierdzenia, aby napotkać takie sytuacje. Możemy użyć wbudowanych walidatorów, ale dodamy Niestandardowy walidator do pola lokalizacje.

walidatory niestandardowe

jako pole typu lokalizacji jest tablicą ciągu znaków. Obecnie tablica, która ma być wstawiona, może zawierać dowolną ilość pozycji. Stwórzmy tutaj walidację. Obserwuj pole lokalizacje.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
let details = new Schema ({
name: {
type: String
},
age: {
type: Number
},
locations: {
type: ,
validate: {
validator: function(arr) {
return arr.długość > 2;
},
wiadomość: „musisz podać więcej niż 2 lokalizacje.”
}
}
});

dodaliśmy nowe pole, validate.

1
2
3
4
5
6
validate: {
validator: function (arr) {
return arr.długość > 2
},
wiadomość: „musisz podać więcej niż 2 lokalizacje.’
}

musimy użyć słowa kluczowego validate, aby utworzyć własne walidacje. Jako jego wartość będziemy mieli obiekt, który zawiera walidację.

1
2
3
validator: function (arr) {
return arr.długość > 2
},

zdefiniowaliśmy funkcję jako walidację, która sprawdzi, czy długość tablicy jest większa niż dwa, czy nie. Jeśli Walidacja zostanie naruszona, wyrzuci błąd zawierający komunikat, który podaliśmy w następnym polu.

1
wiadomość: „musisz podać więcej niż 2 lokalizacje.’

sprawdźmy to za pomocą narzędzia listonosz.

obraz z Gyazo

wyświetla błąd wskazujący „musisz podać więcej niż 2 lokalizacje.”ponieważ staraliśmy się wstawić dwie wartości.

wniosek

Walidacja jest ważną częścią schematu mangusty. Wraz z wbudowanymi walidatorami, mongoose zapewnia również możliwość tworzenia niestandardowych walidacji. Tworzenie własnych walidacji jest również bardzo proste. Walidacje niestandardowe mogą być stosowane tam, gdzie wbudowane walidatory nie spełniają wymagań.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.