Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Sequelize je Node.js objektově relační mapovač (ORM), který poskytuje snadno použitelné API pro relační databáze, jako je Oracle, PostgreSQL, MySQL, MariaDB, SQLite a další.

PostgreSQL je široce používaný open-source systém pro správu relačních databází (RDBMS), známý pro své rozsáhlé funkce, vynikající zabezpečení a škálovatelnost.

PostgreSQL je kompatibilní s více programovacími jazyky, včetně JavaScriptu, takže je ideální volbou pro webové a datové aplikace. Zde se naučíte nastavit Postgres databázi v Node.js pomocí Sequelize.

Krok 1: Instalace závislostí

Než budete moci používat PostgreSQL, musíte jej nainstalovat do systému. Chcete-li stáhnout PostgreSQL, přejděte na Web PostgreSQL a vyberte svůj operační systém. Pokud během tohoto procesu na macOS narazíte na problémy, podívejte se instalace PostgreSQL na macOS.

Případně můžete použít PostgreSQL v cloudu s využitím platforem, jako je např

instagram viewer
ElephantSQL které nabízejí PostgreSQL jako službu.

Dále nainstalujte sequelizovat spuštěním následujícího příkazu:

npm install sequelize

Poté nainstalujte ovladač databáze PostgreSQL spuštěním příkazu níže:

npm install pg pg-hstore

Krok 2: Připojení k databázi PostgreSQL

Ve zdrojovém adresáři projektu vytvořte a config složku. V config složku, vytvořte a db.js soubor. Tento soubor bude obsahovat veškerý kód propojující vaši aplikaci Node.js s databází PostgreSQL.

Dále ve vašem db.js soubor, import Sequelizovat z sequelizovat.

konst { Sequelize } = vyžadovat("pokračovat");

Dále musíte vytvořit a Sequelizovat instance. Tato instance bere jako argumenty parametry připojení, jako je název databáze, uživatelské jméno a heslo. Alternativně bere jako argument jediné URI připojení.

Například:

// Parametry připojení
konst pokračovat = Nový Sequelizovat ('databáze', 'uživatelské jméno', 'Heslo')

// s URI
konst pokračovat = Nový Sequelizovat (process.env. POSTGRESQL_DB_URI)

Tento konstruktor navíc přebírá konfigurační objekt jako volitelný argument.

Dále otestujte své sequelize připojení přidáním kódu pod váš db.js soubor:

konst testDbConnection = asynchronní () => {
Snaž se {
čekat sequelize.authenticate();
řídicí panel.log("Spojení bylo úspěšně navázáno.");
} chytit (chyba) {
řídicí panel.chyba("Nelze se připojit k databázi:", chyba);
}
};

Výše uvedený blok kódu volá sequelizovat.ověřit() způsob, jak otestovat, zda je připojení v pořádku, a vypíše "Připojení bylo úspěšně navázáno." utěšovat, pokud je. Pokud dojde k chybě připojení, vypíše se „Nelze se připojit k databázi:“ spolu s chybou.

Nakonec exportujte instanci sequelize a testDbConnection funkce.

modul.exports = { sq: sequelize, testDbConnection };

Krok 3: Vytvoření modelu Sequelize

Ve zdrojovém adresáři projektu vytvořte a modely složku. Tato složka bude obsahovat všechny vaše sequelize modely. Dále vytvořte soubor modelu. Název, který souboru zadáte, by měl poskytovat informace o reprezentaci modelu.

V souboru modelu importujte instanci sequelize.

// example.js
konst { sq } = vyžadovat("../config/db");

Dále import Typy dat z sequelizovat.

konst { DataTypes } = vyžadovat("pokračovat");

Typy dat umožňuje nastavit požadovaný datový typ pro každou vlastnost na vašem modelu.

Můžete vytvořit nový model sequelize představující tabulku ve vaší databázi zavoláním definovat metoda na vaší instanci sequelize.

The definovat metoda má dva argumenty: Název modelu a objekt atributů. Název modelu představuje název modelu. Objekt atributů představuje sloupce databáze, přičemž každá vlastnost představuje sloupec.

Zde je příklad modelu sequelize:

konst Uživatel = sq.define("uživatel", {
e-mailem: {
typ: DataTypes. TĚTIVA,
allowNull: Nepravdivé,
primární klíč: skutečný,
},

celé jméno: {
typ: DataTypes. TĚTIVA,
},

věk: {
typ: DataTypes. CELÉ ČÍSLO,
},

zaměstnaný: {
typ: DataTypes. BOOLEAN,
výchozí hodnota: Nepravdivé,
},
});

Výše uvedený blok kódu definuje a Uživatel model s e-mailem, celé jméno, stáří, a zaměstnaný vlastnosti.

The e-mailem vlastnost je typ řetězce, který nemůže být prázdný (allowNull: nepravda) a funguje také jako primární klíč pro Uživatel stůl (primární klíč: true). The celé jméno a stáří vlastnost je řetězec (Typy dat. TĚTIVA) a celočíselný typ (Typy dat. CELÉ ČÍSLO), resp. The zaměstnaný vlastnost je booleovský typ s výchozí hodnotou Nepravdivé, což znamená, že pokud není zadán, bude v databázi automaticky nastaven na hodnotu false.

Dále zavolejte na synchronizace metoda na vašem modelu. Tato metoda bere jako argument konfigurační objekt. V závislosti na možnostech v konfiguračním objektu, synchronizace metoda může:

  • User.sync(): Vytvořte tabulku, pokud neexistuje, a nedělá nic, pokud existuje.
  • User.sync({ force: true }): Vytvořte tabulku a zrušte první, pokud již existuje.
  • User.sync({ alter: true }): Zkontrolujte aktuální stav tabulky v databázi a proveďte nezbytné změny v tabulce, aby odpovídala modelu.

Například:

User.sync().then(() => {
řídicí panel.log("Uživatelský model synchronizován");
});

Výše uvedený blok kódu vytváří databázovou tabulku pro Uživatel model, pokud neexistuje, a nedělá nic, pokud existuje.

Nakonec exportujte svůj model:

modul.exports = Uživatel;

Dotazování databáze PostgreSQL

Sequelize poskytuje různé metody, které vám umožní pracovat s vaší PostgreSQL databází bez psaní raw SQL příkazy.

Ukládání dat do PostgreSQL

Chcete-li uložit data do databáze PostgreSQL, zavolejte vytvořit metodu na vašem modelu a předejte objekt, který implementuje model PostgreSQL jako argument.

Například:

konst mike = User.create({
e-mailem: "[email protected]",
celé jméno: "Mike Smith",
stáří: 30,
zaměstnaný: skutečný,
});

Blok kódu výše vytvoří a Uživatel příklad Mike ve vaší databázi a automaticky vygeneruje jedinečné ID.

Načítání dat z PostgreSQL

Data lze z databáze PostgreSQL získat několika způsoby pomocí sequelize, ale záleží na povaze dat, která chcete přijímat.

Nejběžnější způsoby načítání dat jsou Najdi jednu a najítVše metody. The najítVše vrátí všechny instance dat, které splňují daný dotaz, while Najdi jednu vrátí první instanci, která vyhovuje dotazu.

Například:

// Najít všechny uživatele
konst uživatelé = čekat User.findAll();

Výše uvedený kód vrátí všechny Uživatel instance v databázi.

Vrácená data můžete filtrovat pomocí kde prohlášení. Tento příkaz umožňuje přidat do dotazu určité podmínky. Váš dotaz vrátí pouze instance, které splňují tyto podmínky.

Například:

User.findAll({
kde: {
zaměstnaný: Nepravdivé
}
});

Výše uvedený kód vrátí všechny Uživatel případy s jejich zaměstnaný vlastnost nastavena na Nepravdivé v databázi.

Aktualizace dat na PostgreSQL

Data v databázi PostgreSQL můžete aktualizovat voláním Aktualizace a předání filtru jako argumentu.

Například:

čekat User.update({ zaměstnaný: skutečný }, {
kde: {
zaměstnaný: Nepravdivé
}
});

Výše uvedený kód změní všechny Uživatel případy s an zaměstnaný hodnota Nepravdivé na skutečný.

Případně můžete aktualizovat data ruční úpravou vlastností, které chcete změnit, a voláním Uložit metoda na instanci.

Například:

konst userMike = čekat User.findOne({ kde: { e-mailem: "[email protected]" } });

-li(userMike !== nula) {
userMike.email = "[email protected]"
čekat userMike.save()
}

Výše uvedený kód se dotazuje na databázi uživatele s e-mailem „[email protected]“ pomocí Najdi jednu metoda. Pokud je uživatel nalezen, znovu přiřadí vlastnost e-mailu „[email protected]“ a zavolá Uložit způsob aktualizace databáze.

Mazání dat na PostgreSQL

Data na PostgreSQL můžete odstranit voláním zničit a předání filtru jako argumentu.

Například:

čekat User.destroy({
kde: {
e-mailem: "[email protected]"
}
});

Výše uvedený kód se dotáže na databázi uživatele s e-mailem „[email protected]“ a odstraní uživatele z databáze.

Výhody používání PostgreSQL se Sequlize

Psaní nezpracovaných SQL dotazů pro interakci s PostgreSQL databází může být problém. Se Sequelize můžete snadno definovat modely, vytvářet mezi nimi asociace a dotazovat se na databázi pomocí jednoduchého a intuitivního API. Alternativně můžete použít jiné ORM, jako je TypeORM, pro interakci s PostgreSQL databází bez potíží s psaním nezpracovaných SQL dotazů.