Tokie skaitytojai kaip jūs padeda palaikyti MUO. Kai perkate naudodami nuorodas mūsų svetainėje, galime uždirbti filialų komisinius. Skaityti daugiau.

Sequelize yra Node.js objektų reliacinis žemėlapis (ORM), kuris suteikia lengvai naudojamą API reliacinėms duomenų bazėms, tokioms kaip Oracle, PostgreSQL, MySQL, MariaDB, SQLite ir kt.

„PostgreSQL“ yra plačiai naudojama atvirojo kodo reliacinių duomenų bazių valdymo sistema (RDBMS), garsėjanti plačiomis funkcijomis, puikiu saugumu ir masteliu.

„PostgreSQL“ yra suderinamas su keliomis programavimo kalbomis, įskaitant „JavaScript“, todėl tai yra idealus pasirinkimas žiniatinklio ir duomenų valdomoms programoms. Čia išmoksite nustatyti Postgres duomenų bazę Node.js naudojant Sequelize.

1 veiksmas: Priklausomybių diegimas

Prieš naudodami PostgreSQL, turite ją įdiegti savo sistemoje. Norėdami atsisiųsti PostgreSQL, eikite į PostgreSQL svetainė ir pasirinkite operacinę sistemą. Jei šio proceso metu kyla problemų naudojant „macOS“, patikrinkite „PostgreSQL“ diegimas „MacOS“..

instagram viewer

Arba galite naudoti PostgreSQL debesyje, pasinaudodami tokiomis platformomis kaip ElephantSQL kurie siūlo PostgreSQL kaip paslaugą.

Toliau įdiekite tęsinys paleisdami šią komandą:

npm diegimo tęsinys

Tada įdiekite PostgreSQL duomenų bazės tvarkyklę vykdydami toliau pateiktą komandą:

npm įdiegti pg pg-hstore

2 veiksmas: prisijungimas prie PostgreSQL duomenų bazės

Savo projekto šaltinio kataloge sukurkite a konfig aplanką. Viduje konfig aplanką, sukurkite a db.js failą. Šiame faile bus visas kodas, jungiantis jūsų Node.js programą su PostgreSQL duomenų baze.

Kitas, jūsų db.js failas, importas Tęsinystęsinys.

konst { Sequelize } = reikalauti("tęsinys");

Toliau reikia sukurti a Tęsinys instancija. Šis pavyzdys naudoja ryšio parametrus, tokius kaip duomenų bazės pavadinimas, vartotojo vardas ir slaptažodis, kaip argumentus. Arba kaip argumentą naudojamas vienas ryšio URI.

Pavyzdžiui:

// Ryšio parametrai
konst tęsinys = naujas Sequelize ("duomenų bazė", 'Vartotojo vardas', 'Slaptažodis')

// su URI
konst tęsinys = naujas Tęsti (process.env. POSTGRESQL_DB_URI)

Be to, šis konstruktorius pasirenka konfigūracijos objektą kaip pasirenkamą argumentą.

Tada išbandykite nuoseklųjį ryšį pridėdami kodą po savo db.js failas:

konst testDbConnection = async () => {
bandyti {
laukti sequelize.authenticate();
konsolė.log(„Ryšys sėkmingai užmegztas“.);
} sugauti (klaida) {
konsolė.error("Neįmanoma prisijungti prie duomenų bazės:", klaida);
}
};

Viršuje esantis kodo blokas iškviečia tęsinys.autentifikuoti () būdas patikrinti, ar ryšys geras, ir išspausdinamas pranešimas „Ryšys sėkmingai užmegztas“. paguosti, jei taip. Jei įvyksta ryšio klaida, kartu su klaida išspausdinama „Nepavyko prisijungti prie duomenų bazės:“.

Galiausiai eksportuokite tęsinio egzempliorių ir testDbConnection funkcija.

modulis.exports = { kv: sequelize, testDbConnection };

3 veiksmas: sukurkite sekimo modelį

Savo projekto šaltinio kataloge sukurkite a modeliai aplanką. Šiame aplanke bus visi papildomi modeliai. Tada sukurkite modelio failą. Failo pavadinimas turėtų suteikti informacijos apie modelio atvaizdavimą.

Savo modelio faile importuokite sekvencijos egzempliorių.

// example.js
konst { kv } = reikalauti("../config/db");

Toliau importuokite Duomenų tipaitęsinys.

konst { Duomenų tipai } = reikalauti("tęsinys");

Duomenų tipai leidžia nustatyti reikiamą duomenų tipą kiekvienai modelio nuosavybei.

Galite sukurti naują tęstinio modelio modelį, vaizduojantį lentelę jūsų duomenų bazėje, paskambinę apibrėžti metodą savo tęsinio egzemplioriuje.

The apibrėžti metodas naudoja du argumentus: modelio pavadinimą ir atributų objektą. Modelio pavadinimas reiškia modelio pavadinimą. Atributų objektas žymi duomenų bazės stulpelius, o kiekviena savybė reiškia stulpelį.

Toliau pateikiamas tolesnio modelio pavyzdys:

konst Vartotojas = sq.define("Vartotojas", {
paštas: {
tipas: DataTypes. STRING,
allowNull: klaidinga,
pagrindinis raktas: tiesa,
},

pilnas vardas: {
tipas: DataTypes. STRING,
},

amžius: {
tipas: DataTypes. SVEIKI SKAIČIUS,
},

dirba: {
tipas: DataTypes. BOOLEAN,
Numatytoji reikšmė: klaidinga,
},
});

Aukščiau pateiktas kodo blokas apibrėžia a Vartotojas modelis su an paštu, pilnas vardas, amžiaus, ir įdarbintas savybių.

The paštu nuosavybė yra eilutės tipas, kuris negali būti tuščias (allowNull: klaidinga) ir taip pat veikia kaip pagrindinis raktas Vartotojas stalas (pagrindinis raktas: tiesa). The pilnas vardas ir amžiaus nuosavybė yra eilutė (Duomenų tipai. STRING) ir sveikojo skaičiaus tipas (Duomenų tipai. SVEIKI SKAIČIUS), atitinkamai. The įdarbintas nuosavybė yra loginis tipas, kurio numatytoji reikšmė yra klaidinga, o tai reiškia, kad jei jis nenurodytas, duomenų bazėje jis automatiškai bus nustatytas į false.

Toliau skambinkite sinchronizuoti metodas jūsų modelyje. Šis metodas naudoja konfigūracijos objektą kaip argumentą. Atsižvelgiant į konfigūracijos objekto parinktis, sinchronizuoti metodas gali:

  • User.sync(): sukurkite lentelę, jei jos nėra, ir nieko nedarykite, jei ji yra.
  • User.sync({ force: true }): sukurkite lentelę ir numeskite pirmąją, jei ji jau yra.
  • User.sync({ alter: true }): patikrinkite esamą lentelės būseną duomenų bazėje ir atlikite reikiamus lentelės pakeitimus, kad ji atitiktų modelį.

Pavyzdžiui:

User.sync().then(() => {
konsolė.log("Naudotojo modelis sinchronizuotas");
});

Aukščiau pateiktas kodo blokas sukuria duomenų bazės lentelę Vartotojas modelis, jei jo nėra, ir nieko nedaro, jei yra.

Galiausiai eksportuokite savo modelį:

modulis.exports = Vartotojas;

Užklausa PostgreSQL duomenų bazėje

Sequelize siūlo įvairius metodus, leidžiančius sąveikauti su PostgreSQL duomenų baze neįrašant raw SQL komandos.

Duomenų įrašymas į PostgreSQL

Norėdami išsaugoti duomenis PostgreSQL duomenų bazėje, skambinkite sukurti metodą savo modelyje ir kaip argumentą perduoti objektą, kuris įgyvendina PostgreSQL modelį.

Pavyzdžiui:

konst mike = User.create({
paštas: "[email protected]",
pilnas vardas: "Mike'as Smithas",
amžius: 30,
dirba: tiesa,
});

Aukščiau pateiktas kodo blokas sukuria a Vartotojas pavyzdys Maikas savo duomenų bazėje ir automatiškai sugeneruoja unikalų ID.

Duomenų gavimas iš PostgreSQL

Duomenis iš PostgreSQL duomenų bazės galima gauti keliais būdais naudojant sekvenciją, tačiau tai priklauso nuo norimų gauti duomenų pobūdžio.

Dažniausi duomenų gavimo būdai yra rasti vieną ir rasti Viską metodus. The rasti Viską grąžina visus duomenų egzempliorius, kurie tenkina nurodytą užklausą, o rasti vieną grąžina pirmą užklausą tenkinantį atvejį.

Pavyzdžiui:

// Rasti visus vartotojus
konst vartotojai = laukti User.findAll();

Aukščiau pateiktas kodas grąžins visus Vartotojas atvejų duomenų bazėje.

Galite filtruoti grąžintus duomenis naudodami kur pareiškimas. Šis teiginys leidžia į užklausą įtraukti tam tikras sąlygas. Jūsų užklausa pateiks tik tas sąlygas atitinkančius egzempliorius.

Pavyzdžiui:

User.findAll({
kur: {
dirba: klaidinga
}
});

Aukščiau pateiktas kodas grąžins visus Vartotojas atvejų su jų įdarbintas nustatyta nuosavybė klaidinga duomenų bazėje.

„PostgreSQL“ duomenų atnaujinimas

Galite atnaujinti duomenis PostgreSQL duomenų bazėje skambindami atnaujinti metodą ir filtro perdavimą kaip argumentą.

Pavyzdžiui:

laukti User.update({ įdarbintas: tiesa }, {
kur: {
dirba: klaidinga
}
});

Aukščiau pateiktas kodas pakeičia visus Vartotojas atvejai su an įdarbintas vertė klaidinga į tiesa.

Arba galite atnaujinti duomenis rankiniu būdu modifikuodami norimas keisti ypatybes ir paskambinę į sutaupyti metodas.

Pavyzdžiui:

konst userMike = laukti User.findOne({ kur: { paštu: "[email protected]" } });

jeigu(userMike !== nulinis) {
userMike.email = "[email protected]"
laukti userMike.save()
}

Aukščiau pateiktas kodas užklausa duomenų bazėje naudotojui, turinčiam el. pašto adresą „[email protected]“, naudojantį rasti vieną metodas. Jei vartotojas randamas, jis iš naujo priskiria el. pašto ypatybę „[email protected]“ ir iškviečia sutaupyti būdas atnaujinti duomenų bazę.

Duomenų ištrynimas iš PostgreSQL

Galite ištrinti duomenis iš PostgreSQL skambindami sunaikinti metodą ir filtro perdavimą kaip argumentą.

Pavyzdžiui:

laukti User.destroy({
kur: {
paštas: "[email protected]"
}
});

Aukščiau pateiktas kodas ieško duomenų bazėje vartotojo, turinčio el. pašto adresą „[email protected]“, ir ištrina vartotoją iš duomenų bazės.

„PostgreSQL“ naudojimo su „Sequlize“ pranašumai

Neapdorotų SQL užklausų rašymas, norint sąveikauti su PostgreSQL duomenų baze, gali būti varginantis. Naudodami Sequelize galite lengvai apibrėžti modelius, kurti sąsajas tarp jų ir pateikti duomenų bazės užklausas naudodami paprastą ir intuityvią API. Arba galite naudoti kitus ORM, pvz., TypeORM, kad galėtumėte sąveikauti su PostgreSQL duomenų baze be vargo rašant neapdorotas SQL užklausas.