Sequelize je Node.js objektovo-relačný mapovač (ORM), ktorý poskytuje ľahko použiteľné API pre relačné databázy, ako sú Oracle, PostgreSQL, MySQL, MariaDB, SQLite a ďalšie.
PostgreSQL je široko používaný open source systém na správu relačných databáz (RDBMS), známy svojimi rozsiahlymi funkciami, vynikajúcou bezpečnosťou a škálovateľnosťou.
PostgreSQL je kompatibilný s viacerými programovacími jazykmi vrátane JavaScriptu, čo z neho robí ideálnu voľbu pre webové a dátové aplikácie. Tu sa naučíte nastaviť Postgres databázu v Node.js pomocou Sequelize.
Krok 1: Inštalácia závislostí
Predtým, ako budete môcť používať PostgreSQL, musíte ho nainštalovať do systému. Ak chcete stiahnuť PostgreSQL, prejdite na Web PostgreSQL a vyberte svoj operačný systém. Ak sa počas tohto procesu v systéme macOS stretnete s problémami, skontrolujte inštalácia PostgreSQL na macOS.
Prípadne môžete použiť PostgreSQL v cloude s využitím platforiem ako napr ElephantSQL ktoré ponúkajú PostgreSQL ako službu.
Ďalej nainštalujte pokračovať spustením nasledujúceho príkazu:
pokračovanie inštalácie npm
Potom nainštalujte ovládač databázy PostgreSQL spustením príkazu nižšie:
npm nainštalovať pg pg-hstore
Krok 2: Pripojenie k databáze PostgreSQL
V zdrojovom adresári projektu vytvorte a config priečinok. V config priečinok, vytvorte a db.js súbor. Tento súbor bude obsahovať všetok kód spájajúci vašu aplikáciu Node.js s databázou PostgreSQL.
Ďalej vo vašom db.js súbor, import Sequelizovať od pokračovať.
konšt { Sequelize } = vyžadovať("pokračovať");
Ďalej musíte vytvoriť a Sequelizovať príklad. Táto inštancia berie ako argumenty parametre pripojenia, ako je názov databázy, meno používateľa a heslo. Prípadne berie ako argument jediné URI pripojenia.
Napríklad:
// Parametre pripojenia
konšt pokračovať = Nový Pokračovať ('databáza', 'používateľské meno', 'heslo')
// s URI
konšt pokračovať = Nový Sequelize (process.env. POSTGRESQL_DB_URI)
Okrem toho tento konštruktor berie konfiguračný objekt ako voliteľný argument.
Potom otestujte svoje pripojenie k sekvenizácii pridaním kódu pod váš db.js súbor:
konšt testDbConnection = async () => {
skúste {
čakať sequelize.authenticate();
konzoly.log("Pripojenie bolo úspešne nadviazané.");
} chytiť (chyba) {
konzoly.chyba("Nedá sa pripojiť k databáze:", chyba);
}
};
Vyššie uvedený blok kódu volá pokračovať.autentifikovať() metóda na otestovanie, či je pripojenie v poriadku a vypíše sa „Pripojenie bolo úspešne nadviazané“. utešiť, ak áno. Ak dôjde k chybe pripojenia, spolu s chybou sa vypíše „Nedá sa pripojiť k databáze:“.
Nakoniec exportujte inštanciu sequelize a testDbConnection funkciu.
modul.exports = { sq: sequelize, testDbConnection };
Krok 3: Vytvorenie modelu Sequelize
V zdrojovom adresári projektu vytvorte a modelov priečinok. Tento priečinok bude obsahovať všetky vaše modely na pokračovanie. Ďalej vytvorte súbor modelu. Názov, ktorý dáte súboru, by mal poskytovať informácie o reprezentácii modelu.
V súbore modelu importujte inštanciu sequelize.
// example.js
konšt { sq } = vyžadovať("../config/db");
Ďalej import Dátové typy od pokračovať.
konšt { DataTypes } = vyžadovať("pokračovať");
Dátové typy umožňuje nastaviť požadovaný typ údajov pre každú vlastnosť vo vašom modeli.
Môžete vytvoriť nový model sequelize predstavujúci tabuľku vo vašej databáze zavolaním definovať vo vašej inštancii sequelize.
The definovať metóda má dva argumenty: Názov modelu a objekt atribútov. Názov modelu predstavuje názov modelu. Objekt atribútov predstavuje stĺpce databázy, pričom každá vlastnosť predstavuje stĺpec.
Tu je príklad modelu sequelize:
konšt Používateľ = sq.define("užívateľ", {
email: {
typ: Dátové typy. STRING,
allowNull: falošný,
primárny kľúč: pravda,
},celé meno: {
typ: Dátové typy. STRING,
},
Vek: {
typ: Dátové typy. INTEGER,
},
zamestnaný: {
typ: Dátové typy. BOOLEAN,
predvolená hodnota: falošný,
},
});
Vyššie uvedený blok kódu definuje a Používateľ model s an email, celé meno, Vek, a zamestnaný vlastnosti.
The email vlastnosť je typ reťazca, ktorý nemôže byť prázdny (allowNull: nepravda) a tiež funguje ako primárny kľúč pre Používateľ stôl (primárny kľúč: true). The celé meno a Vek vlastnosť je reťazec (Dátové typy. STRING) a celočíselný typ (Dátové typy. INTEGER), resp. The zamestnaný property je booleovský typ s predvolenou hodnotou falošný, čo znamená, že ak nie je zadaný, v databáze sa automaticky nastaví na hodnotu false.
Ďalej zavolajte na synchronizácia metóda na vašom modeli. Táto metóda berie ako argument konfiguračný objekt. V závislosti od možností v konfiguračnom objekte, synchronizácia metóda môže:
- User.sync(): Vytvorte tabuľku, ak neexistuje, a nerobí nič, ak existuje.
- User.sync({ force: true }): Vytvorte tabuľku a vypustite prvú, ak už existuje.
- User.sync({ alter: true }): Skontrolujte aktuálny stav tabuľky v databáze a vykonajte potrebné zmeny v tabuľke, aby sa zhodovala s modelom.
Napríklad:
User.sync().then(() => {
konzoly.log("Model používateľa synchronizovaný");
});
Vyššie uvedený blok kódu vytvára databázovú tabuľku pre Používateľ model, ak neexistuje, a nerobí nič, ak existuje.
Nakoniec exportujte svoj model:
modul.exports = Používateľ;
Dopytovanie databázy PostgreSQL
Sequelize poskytuje rôzne metódy, ktoré vám umožňujú interagovať s vašou databázou PostgreSQL bez písania raw SQL príkazy.
Ukladanie údajov do PostgreSQL
Ak chcete uložiť údaje do databázy PostgreSQL, zavolajte na vytvoriť metódu na vašom modeli a odovzdajte objekt, ktorý implementuje model PostgreSQL ako argument.
Napríklad:
konšt mike = User.create({
email: "[email protected]",
celé meno: "Mike Smith",
Vek: 30,
zamestnaný: pravda,
});
Vyššie uvedený blok kódu vytvára a Používateľ príklad Mike vo vašej databáze a automaticky vygeneruje jedinečné ID.
Načítanie údajov z PostgreSQL
Údaje je možné získať z databázy PostgreSQL niekoľkými spôsobmi pomocou funkcie sequelize, ale závisí to od povahy údajov, ktoré chcete prijímať.
Najbežnejšie metódy na získanie údajov sú findOne a findAll metódy. The findAll vráti všetky inštancie údajov, ktoré vyhovujú danému dotazu, zatiaľ čo findOne vráti prvú inštanciu, ktorá vyhovuje dotazu.
Napríklad:
// Nájsť všetkých používateľov
konšt užívatelia = čakať User.findAll();
Vyššie uvedený kód vráti všetky Používateľ inštancie v databáze.
Vrátené údaje môžete filtrovať pomocou kde vyhlásenie. Toto vyhlásenie vám umožňuje pridať do dotazu určité podmienky. Váš dotaz vráti iba inštancie, ktoré spĺňajú tieto podmienky.
Napríklad:
User.findAll({
kde: {
zamestnaný: falošný
}
});
Vyššie uvedený kód vráti všetky Používateľ prípady s ich zamestnaný vlastnosť nastavená na falošný v databáze.
Aktualizácia údajov na PostgreSQL
Údaje v databáze PostgreSQL môžete aktualizovať zavolaním na aktualizovať a odovzdanie filtra ako argumentu.
Napríklad:
čakať User.update({ zamestnaný: pravda }, {
kde: {
zamestnaný: falošný
}
});
Vyššie uvedený kód zmení všetky Používateľ prípady s an zamestnaný hodnota falošný do pravda.
Prípadne môžete aktualizovať údaje manuálnou úpravou vlastností, ktoré chcete zmeniť, a volaním uložiť metóda na inštancii.
Napríklad:
konšt userMike = čakať User.findOne({ kde: { email: "[email protected]" } });
ak(userMike !== nulový) {
userMike.email = "[email protected]"
čakať userMike.save()
}
Vyššie uvedený kód sa dotazuje na databázu používateľa s e-mailom „[email protected]“ pomocou findOne metóda. Ak sa používateľ nájde, priradí vlastnosť e-mailu „[email protected]“ a zavolá na uložiť spôsob aktualizácie databázy.
Vymazanie údajov na PostgreSQL
Údaje na PostgreSQL môžete odstrániť zavolaním na zničiť a odovzdanie filtra ako argumentu.
Napríklad:
čakať User.destroy({
kde: {
email: "[email protected]"
}
});
Vyššie uvedený kód sa pýta do databázy používateľa s e-mailom „[email protected]“ a vymaže používateľa z databázy.
Výhody používania PostgreSQL so Sequlize
Písanie nespracovaných SQL dotazov na interakciu s databázou PostgreSQL môže byť problém. Pomocou Sequelize môžete jednoducho definovať modely, vytvárať medzi nimi asociácie a dotazovať sa v databáze pomocou jednoduchého a intuitívneho API. Prípadne môžete použiť iné ORM, ako napríklad TypeORM, na interakciu s databázou PostgreSQL bez problémov s písaním nespracovaných SQL dotazov.