Sequelize on Node.js-i objektide relatsioonikaardistaja (ORM), mis pakub hõlpsasti kasutatavat API-d relatsiooniandmebaasidele, nagu Oracle, PostgreSQL, MySQL, MariaDB, SQLite ja palju muud.
PostgreSQL on laialdaselt kasutatav avatud lähtekoodiga relatsioonilise andmebaasi haldussüsteem (RDBMS), mis on tuntud oma ulatuslike funktsioonide, suurepärase turvalisuse ja mastaapsuse poolest.
PostgreSQL ühildub mitme programmeerimiskeelega, sealhulgas JavaScriptiga, mistõttu on see ideaalne valik veebi- ja andmepõhiste rakenduste jaoks. Siit saate teada, kuidas seadistada Postgresi andmebaas Node.js-is, kasutades funktsiooni Sequelize.
1. samm: sõltuvuste installimine
Enne PostgreSQL-i kasutamist peate selle oma süsteemi installima. PostgreSQL-i allalaadimiseks liikuge lehele PostgreSQL veebisait ja valige oma operatsioonisüsteem. Kui teil tekib MacOS-is selle protsessi käigus probleeme, vaadake PostgreSQL-i installimine macOS-i.
Teise võimalusena saate kasutada PostgreSQL-i pilves, võimendades selliseid platvorme nagu ElephantSQL mis pakuvad PostgreSQL-i teenusena.
Järgmisena installige järg käivitades järgmise käsu:
npm installi järg
Seejärel installige PostgreSQL-i andmebaasi draiver, käivitades alloleva käsu:
npm installi pg pg-hstore
2. samm: ühendage PostgreSQL-i andmebaas
Looge oma projekti lähtekataloogis a konfig kausta. Aastal konfig kaust, loo a db.js faili. See fail sisaldab kogu koodi, mis ühendab teie Node.js-i rakenduse PostgreSQL-i andmebaasiga.
Järgmisena teie db.js fail, import Järjekord alates järg.
konst { Järjekord } = nõuda("järg");
Järgmiseks peate looma a Järjekord näiteks. See eksemplar võtab argumentidena ühenduse parameetrid, nagu andmebaasi nimi, kasutajanimi ja parool. Teise võimalusena võtab see argumendina ühe ühenduse URI.
Näiteks:
// Ühenduse parameetrid
konst järg = uus Sequelise('andmebaas', 'kasutajanimi', 'parool')
// URI-ga
konst järg = uus Järjekord (process.env. POSTGRESQL_DB_URI)
Lisaks võtab see konstruktor valikulise argumendina konfiguratsiooniobjekti.
Järgmisena testige oma järgühendust, lisades oma alla koodi db.js fail:
konst testDbConnection = asünkr () => {
proovi {
ootama sequelize.authenticate();
konsool.log("Ühendus on edukalt loodud.");
} püüda (viga) {
konsool.error("Andmebaasiga ei saa ühendust luua:", viga);
}
};
Ülaltoodud koodiplokk kutsub järg.autentida () meetod kontrollimaks, kas ühendus on korras, ja prindib teade "Ühendus on loodud edukalt". lohutada, kui on. Kui ilmneb ühenduse tõrge, prindib koos veaga teade "Andmebaasi ühendamine ei õnnestu:".
Lõpuks eksportige järjestuse eksemplar ja testDbConnection funktsiooni.
moodul.exports = { ruut: järg, testDbConnection };
3. samm: järgmudeli loomine
Looge oma projekti lähtekataloogis a mudelid kausta. See kaust sisaldab kõiki teie järjestatud mudeleid. Järgmisena looge mudelifail. Failile antud nimi peaks andma teavet mudeli esituse kohta.
Importige oma mudelifailis järjestuse eksemplar.
// example.js
konst { ruut } = nõuda("../config/db");
Järgmisena importige Andmetüübid alates järg.
konst { Andmetüübid } = nõuda("järg");
Andmetüübid võimaldab teil määrata oma mudeli iga atribuudi jaoks vajaliku andmetüübi.
Saate luua uue järjestusmudeli, mis esindab teie andmebaasis olevat tabelit, helistades määratleda meetodit oma järge eksemplaril.
The määratleda meetodil on kaks argumenti: mudeli nimi ja atribuutide objekt. Mudeli nimi tähistab mudeli nime. Atribuutide objekt tähistab andmebaasi veerge, kusjuures iga atribuut tähistab veergu.
Siin on näide järgmudelist:
konst Kasutaja = sq.define("kasutaja", {
email: {
tüüp: DataTypes. STRING,
enableNull: vale,
primaarvõti: tõsi,
},täisnimi: {
tüüp: DataTypes. STRING,
},
vanus: {
tüüp: DataTypes. TÄISARV,
},
tööl: {
tüüp: DataTypes. BOOLEAN,
defaultValue: vale,
},
});
Ülaltoodud koodiplokk määratleb a Kasutaja mudel an email, täisnimi, vanusja tööle võetud omadused.
The email atribuut on stringitüüp, mis ei saa olla tühi (allowNull: vale) ja toimib ka primaarvõtmena Kasutaja tabel (primaarvõti: tõsi). The täisnimi ja vanus omadus on string (Andmetüübid. STRING) ja täisarvu tüüp (Andmetüübid. TÄISARV), vastavalt. The tööle võetud atribuut on tõeväärtus, mille vaikeväärtus on vale, mis tähendab, et kui seda pole määratud, määratakse see andmebaasis automaatselt väärtuseks Väär.
Järgmisena helistage sünkroonimine meetod teie mudelil. See meetod võtab argumendina konfiguratsiooniobjekti. Olenevalt konfiguratsiooniobjekti suvanditest, sünkroonimine meetod võib:
- User.sync(): looge tabel, kui seda pole olemas, ja ei tee midagi, kui see on olemas.
- User.sync({ force: true }): looge tabel ja loobuge esimesest, kui see on juba olemas.
- User.sync({ alter: true }): Kontrollige tabeli hetkeseisu andmebaasis ja tehke tabelis vajalikud muudatused, et see mudeliga ühtiks.
Näiteks:
User.sync().then(() => {
konsool.log("Kasutajamudel sünkroonitud");
});
Ülaltoodud koodiplokk loob andmebaasi tabeli Kasutaja mudel, kui seda pole olemas, ja ei tee midagi, kui see on olemas.
Lõpuks eksportige oma mudel:
moodul.exports = Kasutaja;
Päringu esitamine PostgreSQL-i andmebaasist
Sequelise pakub erinevaid meetodeid, mis võimaldavad teil PostgreSQL-i andmebaasiga suhelda ilma töötlemata kujul SQL-käsud.
Andmete salvestamine PostgreSQL-i
Andmete salvestamiseks PostgreSQL-i andmebaasi helistage luua meetodil ja edastage argumendina objekt, mis rakendab PostgreSQL-i mudelit.
Näiteks:
konst mike = User.create({
email: "[email protected]",
täisnimi: "Mike Smith",
vanus: 30,
tööl: tõsi,
});
Ülaltoodud koodiplokk loob a Kasutaja näide mike oma andmebaasis ja genereerib automaatselt kordumatu ID.
Andmete hankimine PostgreSQL-ist
Andmeid saab PostgreSQL-i andmebaasist hankida mitmel viisil, kasutades järjestust, kuid see sõltub saadavate andmete olemusest.
Kõige levinumad meetodid andmete toomiseks on leia üks ja leia kõik meetodid. The leia kõik tagastab kõik andmeeksemplarid, mis vastavad antud päringule, while leia üks tagastab esimese eksemplari, mis päringut rahuldab.
Näiteks:
// Leia kõik kasutajad
konst kasutajad = ootama User.findAll();
Ülaltoodud kood tagastab kõik Kasutaja eksemplare andmebaasis.
Saate tagastatud andmeid filtreerida kasutades kus avaldus. See lause võimaldab teil lisada päringule teatud tingimusi. Teie päring tagastab ainult nendele tingimustele vastavad eksemplarid.
Näiteks:
User.findAll({
kus: {
tööl: vale
}
});
Ülaltoodud kood tagastab kõik Kasutaja juhtumid nendega tööle võetud vara määratud vale andmebaasis.
PostgreSQL-i andmete värskendamine
PostgreSQL-i andmebaasi andmeid saate värskendada, helistades numbrile värskendada meetod ja argumendina filtri läbimine.
Näiteks:
ootama User.update({ tööle võetud: tõsi }, {
kus: {
tööl: vale
}
});
Ülaltoodud kood muudab kõiki Kasutaja juhtumid koos an tööle võetud väärtus vale juurde tõsi.
Teise võimalusena saate andmeid värskendada, muutes käsitsi atribuute, mida soovite muuta, ja helistades numbrile salvestada meetodil.
Näiteks:
konst userMike = ootama User.findOne({ kus: { email: "[email protected]" } });
kui(kasutajaMike !== null) {
userMike.email = "[email protected]"
ootama userMike.save()
}
Ülaltoodud kood küsib andmebaasist kasutajat, kellel on e-kiri "[email protected]", mis kasutab leia üks meetod. Kui kasutaja leitakse, määrab see e-posti atribuudi ümber "[email protected]" ja helistab salvestada meetod andmebaasi värskendamiseks.
Andmete kustutamine PostgreSQL-is
PostgreSQL-i andmeid saate kustutada, helistades numbrile hävitada meetod ja argumendina filtri läbimine.
Näiteks:
ootama User.destroy({
kus: {
email: "[email protected]"
}
});
Ülaltoodud kood otsib andmebaasist kasutajat, kelle meil on "[email protected]", ja kustutab kasutaja andmebaasist.
PostgreSQL-i kasutamise eelised koos Sequlize'iga
Toores SQL-päringute kirjutamine PostgreSQL-i andmebaasiga suhtlemiseks võib olla tülikas. Sequelize'i abil saate hõlpsasti määratleda mudeleid, luua nende vahel seoseid ja teha andmebaasi päringuid lihtsa ja intuitiivse API abil. Teise võimalusena saate kasutada PostgreSQL-i andmebaasiga suhtlemiseks muid ORM-e, näiteks TypeORM-i, ilma SQL-i töötlemata päringute kirjutamise vaevata.