Zintegruj swoją aplikację Node.js z bazą danych MongoDB za pomocą Mongoose.

Zarządzanie danymi w bazie danych MongoDB może być trudne, zwłaszcza w przypadku złożonych modeli danych. MongoDB to baza danych pozbawiona schematów, co oznacza, że ​​dane można dodawać bez przestrzegania określonej struktury. Ta elastyczność sprawia, że ​​MongoDB idealnie nadaje się do przechowywania dużych ilości danych, ale także utrudnia zarządzanie danymi.

Mongoose zapewnia rozwiązanie oparte na schemacie, które pomaga zapewnić, że dane zapisane w MongoDB są spójne i poprawnie sformatowane. Dzięki Mongoose możesz zdefiniować schemat dla swoich modeli danych, który określa strukturę danych i zasady formatowania tych danych. Tutaj dowiesz się, jak używać Mongoose w aplikacji Express.

Konfigurowanie środowiska programistycznego

Przed użyciem Mongoose musisz zainstalować go jako zależność w swoim projekcie.

Możesz zainstalować Mongoose, uruchamiając poniższe polecenie:

npm zainstaluj mangustę

Po zainstalowaniu Mongoose w swoim projekcie musisz połączyć swoją aplikację z MongoDB za pomocą Mongoose.

instagram viewer

Mongoose łączy się z bazą danych MongoDB za pomocą łączyć metoda, która jako argument przyjmuje identyfikator URI MongoDB.

Oto przykład:

// index.js
konst mangusta = wymagać("mangusta")

mangusta.połącz("mongodb://127.0.0.1:27017/przyklad", () =>
konsola.dziennik(„Połączono z bazą danych pomyślnie”)
);

Powyższy blok kodu łączy się z lokalną instancją MongoDB i rejestruje komunikat o powodzeniu, gdy aplikacja pomyślnie połączy się z MongoDB.

Tworzenie modelu mangusty

Model Mongoose to oparta na schemacie klasa w Mongoose, która umożliwia interakcję z kolekcją MongoDB.

Schemat Mongoose definiuje strukturę dokumentów, które można przechowywać w kolekcji MongoDB i zapewnia interfejs do tworzenia, czytania, aktualizowania i usuwania dokumentów w tym kolekcja.

Podczas definiowania modelu Mongoose definiujesz schemat dokumentów w tej kolekcji, w tym właściwości, ich typy i wszelkie walidacje.

Oto przykład modelu Mongoose dla Użytkownik kolekcja:

konst mangusta = wymagać("mangusta");

konst userSchema = mangusta. Schemat({
nazwa: {
typ: Strunowy,
wymagany: [PRAWDA, "Imie jest wymagane"],
},
e-mail: {
typ: Strunowy,
wymagany: PRAWDA,
},
wiek: {
typ: Numer,
zatwierdź: {
walidator: funkcjonować (wartość) {
powrót wartość > 0;
},
wiadomość: () =>„Proszę wprowadzić poprawny wiek”,
},
},
});

konst Użytkownik = mangusta.model("Użytkownik", schemat użytkownika);

moduł.eksport = Użytkownik;

Powyższy blok kodu definiuje schemat Mongoose z trzema właściwościami: nazwa, e-mail, I wiek. Każda właściwość ma zdefiniowany zestaw reguł, których należy przestrzegać podczas mapowania wartości na jej określone pole. Oto zestawienie zasad:

  • nazwa: nazwa właściwość jest A strunowy typ oznaczony jako wymagany, co oznacza, że ​​musisz zamapować ciąg znaków na to pole. Jeśli pozostawisz to pole puste lub wpiszesz inne Typ danych JavaScript, Mongoose zgłasza błąd.
  • e-mail: e-mail właściwość jest A strunowy typ oznaczony jako wymagany. Nie ma innych zasad sprawdzania poprawności, ale w praktyce należy zweryfikować poprawność wiadomości e-mail. Możesz zweryfikować adres e-mail za pomocą wyrażeń regularnych lub biblioteki stron trzecich, takie jak walidator klas.
  • wiek: wiek właściwość jest A numer typu z niestandardową regułą sprawdzania poprawności, która sprawdza, czy wartość odwzorowana na pole jest większa od zera. Jeśli wartość nie przejdzie walidacji, Mongoose zgłosi błąd z komunikatem Podaj prawidłowy wiek. Możesz pozostawić to pole puste, ponieważ nie jest oznaczone jako wymagany.

Po zdefiniowaniu schematu blok kodu tworzy model Mongoose o nazwie Użytkownik za pomocą mangusta.model() metoda. Ta metoda przyjmuje dwa argumenty: nazwę modelu i schemat, który ma być używany w dokumentach.

Wreszcie, Użytkownik model jest eksportowany do innych części aplikacji.

Interakcja z MongoDB za pomocą Mongoose

Gdy Twoja aplikacja jest połączona z bazą danych MongoDB, a Twój model jest utworzony i dostępny dla innych części Twojej aplikacji, możesz wchodzić w interakcje z bazą danych przy użyciu metod dostarczonych przez Mongoose.

W tym samouczku wykonasz Operacje CRUD na bazie danych MongoDB.

Notatka: Pamiętaj, aby zaimportować model Mongoose do dowolnego modułu, w którym będziesz wykonywać operacje CRUD.

Na przykład:

// router.js

konst Użytkownik = wymagać(„./Model użytkownika”)

Tworzenie dokumentu

Dokument jest instancją modelu. Istnieje kilka sposobów tworzenia i zapisywania dokumentów w MongoDB za pomocą Mongoose.

Najpierw możesz utworzyć instancję klasy swojego modelu, a następnie wywołać metodę ratować metoda na to.

Na przykład:

//Tworzenie nowego użytkownika
pozwalać użytkownik = nowy Użytkownik({
nazwa,
e-mail,
wiek,
});

//Zapisywanie użytkownika do bazy danych
użytkownik
.ratować()
.Następnie(() => {
konsola.dziennik(„Użytkownik utworzony pomyślnie”);
})
.złapać((błąd) => {
//obsługa błędu
});

Powyższy blok kodu tworzy i zapisuje plik new Użytkownik dokument do bazy danych MongoDB.

Możesz także zapisać dane do swojej bazy danych za pomocą tworzyć metoda. The tworzyć Metoda tworzy instancję twojego modelu i wywołuje metodę ratować metoda na to. Innymi słowy, łączy w sobie dwie operacje wspomnianej wcześniej techniki.

Na przykład:

User.create({ imię i nazwisko, adres e-mail, wiek }, (błąd, dane) => {
Jeśli (błądzić) rzucićnowyBłąd("Wewnętrzny błąd serwera");

konsola.dziennik(`Użytkownik utworzony pomyślnie: ${dane}`);
});

Powyższy blok kodu tworzy nowy Użytkownik dokument z właściwościami przekazanymi jako argument do metody tworzyć metoda.

Alternatywnie możesz zapisać dane w swojej bazie danych za pomocą wstaw Wiele metoda. Chociaż ta metoda jest idealna tylko do zapisywania danych w partiach.

Na przykład:

User.insertMany(
[
{ imię i nazwisko, adres e-mail, wiek },
{ nazwa_1, e-mail_1, wiek_1 },
],
(błąd, wynik) => {
Jeśli (błąd) {
//obsługa błędu
} w przeciwnym razie {
//Wyślij wyniki
}
}
);

Powyższy blok kodu tworzy dwa nowe dokumenty w formacie Użytkownik kolekcji przy użyciu tablicy przekazanej jako argument do metody wstaw Wiele metoda.

Czytanie dokumentu

Możesz uzyskać dostęp do wszystkich zapisanych dokumentów w bazie danych MongoDB za pomocą Mongoose znajdować metoda.

Na przykład:

Znalezienie.użytkownika({})
.Następnie((dane) => {
konsola.log (dane);
})
.złapać((błądzić) => {
//obsługa błędu
});

Powyższy blok kodu zwróci wszystkie dokumenty w Użytkownik kolekcja.

Możesz także znaleźć wszystkie dokumenty pasujące do określonego zapytania, przekazując zapytanie do metody find.

Na przykład:

// znajdź wszystkie dokumenty, w których wiek wynosi co najmniej 18 lat
user.find({ wiek: { $gte: 18 } })
.Następnie((dane) =>konsola.log (dane))
.złapać((błąd) =>konsola.log (błąd));

Powyższy blok kodu zwróci wszystkie dokumenty z wartością wieku większą niż 18 w Użytkownik kolekcja.

Alternatywnie możesz czytać pojedyncze rekordy za pomocą znajdźWgId metody i przekazując identyfikator dokumentu jako argument lub używając metody znajdźJeden metoda i przekazanie filtru jako argumentu.

Na przykład:

//findById
User.findById (id, (błąd, wynik) => {
Jeśli (wynik) konsola.log (wynik);
Jeśli (błąd) konsola.błąd (błąd)
});

//findOne
User.findOne({ e-mail: [email protected] }).Następnie((użytkownik) => {
Jeśli (!użytkownik) {
//obsługa błędu
}
//wysłać odpowiedź
});

W powyższym bloku kodu plik znajdźWgId Metoda zwraca dokument o pasującym identyfikatorze. The znajdźJeden Metoda zwraca pierwszy dokument zawierający adres e-mail [email protected].

Aktualizowanie dokumentu

Możesz zaktualizować dokument w MongoDB za pomocą Mongoose, używając findByIdAndUpdate metoda. Ta metoda pobiera identyfikator i obiekt ze zaktualizowanymi szczegółami.

Na przykład:

User.findByIdAndUpdate (id, req.body, (err, doc) => {
Jeśli (dokument) {
//Wysłać odpowiedź
}
Jeśli (błąd) {
//obsługa błędu
}
});

Powyższy blok kodu aktualizuje dokument o identyfikatorze pasującym do podanego identyfikatora z podanym obiektem aktualizacji (wymagane ciało).

Usuwanie dokumentu

Możesz usunąć dokument w MongoDB za pomocą Mongoose za pomocą findByIdAndDelete metoda. Ta metoda przyjmuje identyfikator jako argument i usuwa dokument z odpowiednim identyfikatorem.

Na przykład:

User.findByIdAndDelete (id, (błąd, wynik) => {
Jeśli (wynik) {
//Obsługa wyniku
}
Jeśli (błąd) {
//Obsługa błędu
}
});

Powyższy blok kodu usuwa dokument o podanym identyfikatorze z bazy danych MongoDB.

Korzystanie z Mongoose w aplikacjach ekspresowych

W tym artykule omówiono, jak można używać Mongoose w aplikacji ekspresowej. Obejmuje sposób nawiązywania połączenia z MongoDB, strukturyzowania i sprawdzania poprawności danych zapisanych w bazie danych MongoDB oraz wykonywania prostych operacji CRUD.

Używając Mongoose w aplikacjach Express, możesz uprościć i usprawnić interakcje między aplikacją a bazą danych MongoDB.