Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

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.

instagram viewer

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.