Sequelize to mapowanie obiektowo-relacyjne (ORM) Node.js, które zapewnia łatwy w użyciu interfejs API dla relacyjnych baz danych, takich jak Oracle, PostgreSQL, MySQL, MariaDB, SQLite i innych.
PostgreSQL to szeroko stosowany system zarządzania relacyjnymi bazami danych (RDBMS) typu open source, znany ze swoich rozbudowanych funkcji, doskonałego bezpieczeństwa i skalowalności.
PostgreSQL jest kompatybilny z wieloma językami programowania, w tym JavaScript, co czyni go idealnym wyborem dla aplikacji internetowych i opartych na danych. Tutaj nauczysz się konfigurować bazę danych Postgres w Node.js przy użyciu Sequelize.
Krok 1: Instalowanie zależności
Zanim będziesz mógł używać PostgreSQL, musisz zainstalować go w swoim systemie. Aby pobrać PostgreSQL, przejdź do Serwis PostgreSQL i wybierz swój system operacyjny. Jeśli napotkasz problemy podczas tego procesu w systemie macOS, sprawdź instalowanie PostgreSQL na macOS.
Alternatywnie możesz użyć PostgreSQL w chmurze, wykorzystując platformy takie jak ElephantSQL które oferują PostgreSQL jako usługę.
Następnie zainstaluj kontynuacja uruchamiając następujące polecenie:
npm zainstaluj sekwencję
Następnie zainstaluj sterownik bazy danych PostgreSQL, uruchamiając poniższe polecenie:
npm zainstaluj pg pg-hstore
Krok 2: Łączenie z bazą danych PostgreSQL
W katalogu źródłowym projektu utwórz plik konfiguracja teczka. w konfiguracja folder, utwórz plik db.js plik. Ten plik będzie zawierał cały kod łączący Twoją aplikację Node.js z bazą danych PostgreSQL.
Dalej w twoim db.js plik, import Sekwencjonować z kontynuacja.
konst { Sekwencja } = wymagać(„sekwencjonować”);
Następnie musisz utworzyć plik Sekwencjonować instancja. Ta instancja przyjmuje jako argumenty parametry połączenia, takie jak nazwa bazy danych, nazwa użytkownika i hasło. Alternatywnie jako argument przyjmuje pojedynczy identyfikator URI połączenia.
Na przykład:
// Parametry połączenia
konst kontynuacja = nowy Sekwencja ('Baza danych', 'nazwa użytkownika', 'hasło')
// z URI
konst kontynuacja = nowy Sequelize (process.env. POSTGRESQL_DB_URI)
Dodatkowo ten konstruktor przyjmuje obiekt konfiguracji jako opcjonalny argument.
Następnie przetestuj swoje połączenie sequelize, dodając kod poniżej twojego db.js plik:
konst testDbPołączenie = asynchroniczny () => {
próbować {
czekać na sequelize.authenticate();
konsola.dziennik("Połączenie zostało nawiązane pomyślnie.");
} złapać (błąd) {
konsola.błąd("Brak możliwości połączenia z bazą danych:", błąd);
}
};
Powyższy blok kodu wywołuje kontynuacja.uwierzytelniać() metoda sprawdzania, czy połączenie jest OK i wypisuje komunikat „Połączenie zostało nawiązane pomyślnie”. pocieszyć, jeśli tak jest. Jeśli wystąpi błąd połączenia, drukuje „Nie można połączyć się z bazą danych:” wraz z błędem.
Na koniec wyeksportuj instancję sequelize i plik testDbPołączenie funkcjonować.
moduł.eksport = { kwadrat: kontynuacja, testDbConnection };
Krok 3: Tworzenie modelu Sequelize
W katalogu źródłowym projektu utwórz plik modele teczka. Ten folder będzie zawierał wszystkie twoje modele sequeli. Następnie utwórz plik modelu. Nazwa, którą nadasz plikowi powinna zawierać informacje o reprezentacji modelu.
W pliku modelu zaimportuj instancję sequelize.
// przykład.js
konst { kwadrat } = wymagać(„../konfiguracja/baza danych”);
Dalej importuj Typy danych z kontynuacja.
konst { Typy danych } = wymagać(„sekwencjonować”);
Typy danych pozwala ustawić wymagany typ danych dla każdej właściwości w modelu.
Możesz utworzyć nowy model sekwencjonowania reprezentujący tabelę w swojej bazie danych, wywołując funkcję definiować metoda na twojej instancji sequelize.
The definiować Metoda przyjmuje dwa argumenty: nazwę modelu i obiekt atrybutów. Nazwa modelu reprezentuje nazwę modelu. Obiekt atrybutów reprezentuje kolumny bazy danych, przy czym każda właściwość reprezentuje kolumnę.
Oto przykład modelu sequelize:
konst Użytkownik = zdefiniuj sq.("użytkownik", {
e-mail: {
typ: typy danych. STRUNOWY,
zezwalajNull: FAŁSZ,
główny klucz: PRAWDA,
},pełne imię i nazwisko: {
typ: typy danych. STRUNOWY,
},
wiek: {
typ: typy danych. LICZBA CAŁKOWITA,
},
zatrudniony: {
typ: typy danych. BOOLEAN,
domyślna wartość: FAŁSZ,
},
});
Powyższy blok kodu definiuje a Użytkownik modelka z e-mail, pełna nazwa, wiek, I zatrudniony nieruchomości.
The e-mail właściwość jest typem ciągu, który nie może być pusty (ZezwalajNull: fałsz) i działa również jako klucz podstawowy dla Użytkownik tabela (klucz podstawowy: prawda). The pełna nazwa i wiek właściwość to ciąg znaków (Typy danych. STRUNOWY) i typu całkowitego (Typy danych. LICZBA CAŁKOWITA), odpowiednio. The zatrudniony właściwość jest typu logicznego z wartością domyślną FAŁSZ, co oznacza, że jeśli nie zostanie określony, zostanie automatycznie ustawiony na wartość false w bazie danych.
Następnie zadzwoń do synchronizacja metoda na twoim modelu. Ta metoda przyjmuje obiekt konfiguracji jako argument. W zależności od opcji w obiekcie konfiguracji plik synchronizacja metoda może:
- Użytkownik.sync(): Tworzy tabelę, jeśli nie istnieje i nic nie robi, jeśli istnieje.
- User.sync({force: true}): Utwórz tabelę i upuść pierwszą, jeśli już istnieje.
- User.sync({ alter: true }): Sprawdź aktualny stan tabeli w bazie danych i dokonaj niezbędnych zmian w tabeli, aby była zgodna z modelem.
Na przykład:
User.sync().then().() => {
konsola.dziennik(„Zsynchronizowano model użytkownika”);
});
Powyższy blok kodu tworzy tabelę bazy danych dla Użytkownik modelu, jeśli nie istnieje i nic nie robi, jeśli istnieje.
Na koniec wyeksportuj swój model:
moduł.eksport = Użytkownik;
Wysyłanie zapytań do bazy danych PostgreSQL
Sequelize zapewnia różne metody, które pozwalają na interakcję z bazą danych PostgreSQL bez pisania raw Polecenia SQL.
Zapisywanie danych do PostgreSQL
Aby zapisać dane w bazie danych PostgreSQL, wywołaj tworzyć metodę na swoim modelu i przekaż obiekt, który implementuje model PostgreSQL jako argument.
Na przykład:
konst mike = Uzytkownik.utwórz({
e-mail: "[email protected]",
pełna nazwa: „Mike’a Smitha”,
wiek: 30,
zatrudniony: PRAWDA,
});
Powyższy blok kodu tworzy plik Użytkownik wystąpienie mikrofon w Twojej bazie danych i automatycznie generuje unikalny identyfikator.
Pobieranie danych z PostgreSQL
Dane można pobrać z bazy danych PostgreSQL na kilka sposobów za pomocą sequelize, ale zależy to od charakteru danych, które chcesz otrzymać.
Najpopularniejszymi metodami pobierania danych są tzw znajdźJeden I Znajdź wszystko metody. The Znajdź wszystko zwraca wszystkie instancje danych, które spełniają dane zapytanie, podczas gdy znajdźJeden zwraca pierwszą instancję, która spełnia zapytanie.
Na przykład:
// Znajdź wszystkich użytkowników
konst użytkownicy = czekać na User.findAll();
Powyższy kod zwróci wszystkie Użytkownik instancji w bazie danych.
Możesz filtrować zwrócone dane za pomocą Gdzie oświadczenie. Ta instrukcja umożliwia dodanie określonych warunków do zapytania. Twoje zapytanie zwróci tylko instancje spełniające te warunki.
Na przykład:
User.findAll({
Gdzie: {
zatrudniony: FAŁSZ
}
});
Powyższy kod zwróci wszystkie Użytkownik przypadki z nimi zatrudniony właściwość ustawiona na FAŁSZ w bazie danych.
Aktualizowanie danych w PostgreSQL
Możesz zaktualizować dane w bazie danych PostgreSQL, dzwoniąc pod numer aktualizacja metoda i przekazanie filtru jako argumentu.
Na przykład:
czekać na aktualizacja użytkownika({ zatrudniony: PRAWDA }, {
Gdzie: {
zatrudniony: FAŁSZ
}
});
Powyższy kod zmienia wszystkie Użytkownik przypadki z zatrudniony wartość FAŁSZ Do PRAWDA.
Alternatywnie możesz zaktualizować dane, ręcznie modyfikując właściwości, które chcesz zmienić, i wywołując metodę ratować metoda na instancji.
Na przykład:
konst użytkownikMike = czekać na User.findOne({ Gdzie: { e-mail: "[email protected]" } });
Jeśli(użytkownikMike!== zero) {
użytkownikMike.email = „[email protected]”
czekać na użytkownikMike.save()
}
Powyższy kod wysyła zapytanie do bazy danych o użytkownika mającego adres e-mail „[email protected]” za pomocą znajdźJeden metoda. Jeśli użytkownik zostanie znaleziony, ponownie przypisuje właściwość e-mail do „[email protected]” i wywołuje metodę ratować sposób aktualizacji bazy danych.
Usuwanie danych w PostgreSQL
Możesz usunąć dane z PostgreSQL, dzwoniąc pod numer zniszczyć metoda i przekazanie filtru jako argumentu.
Na przykład:
czekać na Użytkownik.destroy({
Gdzie: {
e-mail: „[email protected]”
}
});
Powyższy kod wysyła zapytanie do bazy danych o użytkownika o adresie e-mail „[email protected]” i usuwa użytkownika z bazy danych.
Korzyści z używania PostgreSQL z Sequlize
Pisanie surowych zapytań SQL w celu interakcji z bazą danych PostgreSQL może być kłopotliwe. Dzięki Sequelize możesz łatwo definiować modele, tworzyć powiązania między nimi i wysyłać zapytania do bazy danych za pomocą prostego i intuicyjnego interfejsu API. Alternatywnie możesz użyć innych ORM, takich jak TypeORM, do interakcji z bazą danych PostgreSQL bez kłopotów z pisaniem surowych zapytań SQL.