Sequelize er en Node.js objektrelationel mapper (ORM), der giver en brugervenlig API til relationelle databaser såsom Oracle, PostgreSQL, MySQL, MariaDB, SQLite og mere.
PostgreSQL er et udbredt open source relationsdatabasestyringssystem (RDBMS) kendt for dets omfattende funktioner, fremragende sikkerhed og skalerbarhed.
PostgreSQL er kompatibel med flere programmeringssprog, inklusive JavaScript, hvilket gør det til et ideelt valg til web- og datadrevne applikationer. Her lærer du at opsætte en Postgres-database i Node.js ved hjælp af Sequelize.
Trin 1: Installation af afhængigheder
Før du kan bruge PostgreSQL, skal du installere det på dit system. For at downloade PostgreSQL skal du navigere til PostgreSQL hjemmeside og vælg dit operativsystem. Hvis du løber ind i problemer under denne proces på macOS, så tjek ud installation af PostgreSQL på macOS.
Alternativt kan du bruge PostgreSQL i skyen ved at udnytte platforme som f.eks ElephantSQL der tilbyder PostgreSQL som en service.
Installer derefter fortsættelse ved at køre følgende kommando:
npm installation efterfølger
Installer derefter PostgreSQL-databasedriveren ved at køre kommandoen nedenfor:
npm installer pg pg-hstore
Trin 2: Opret forbindelse til en PostgreSQL-database
I dit projekts kildemappe skal du oprette en config folder. I den config mappe, skal du oprette en db.js fil. Denne fil vil indeholde al den kode, der forbinder din Node.js-applikation til en PostgreSQL-database.
Dernæst i din db.js fil, import Efterfølger fra fortsættelse.
konst { Sequelize } = kræve("efterfølger");
Dernæst skal du oprette en Efterfølger eksempel. Denne instans tager forbindelsesparametre såsom databasenavn, brugernavn og adgangskode som argumenter. Alternativt tager det en enkelt forbindelses-URI som et argument.
For eksempel:
// Forbindelsesparametre
konst efterfølge = ny Efterfølger('database', 'brugernavn', 'adgangskode')
// med URI
konst efterfølge = ny Sequelize (process.env. POSTGRESQL_DB_URI)
Derudover tager denne konstruktør et konfigurationsobjekt som et valgfrit argument.
Derefter skal du teste din sequelize-forbindelse ved at tilføje koden under din db.js fil:
konst testDbConnection = asynkron () => {
prøve {
vente sequelize.authenticate();
konsol.log("Forbindelsen er etableret med succes.");
} fangst (fejl) {
konsol.fejl("Kan ikke oprette forbindelse til databasen:", fejl);
}
};
Kodeblokken ovenfor kalder fortsættelse.godkend() metode til at teste, om forbindelsen er OK, og udskriver "Forbindelsen er etableret med succes." at trøste hvis det er. Hvis der er en forbindelsesfejl, udskriver den "Kan ikke oprette forbindelse til databasen:" sammen med fejlen.
Til sidst skal du eksportere sequelize-forekomsten og testDbConnection fungere.
modul.exports = { sq: sequelize, testDbConnection };
Trin 3: Oprettelse af en efterfølgermodel
I dit projekts kildemappe skal du oprette en modeller folder. Denne mappe vil indeholde alle dine efterfølgermodeller. Opret derefter en modelfil. Det navn, du giver filen, skal give oplysninger om modellens repræsentation.
Importer sequelize-forekomsten i din modelfil.
// eksempel.js
konst { sq } = kræve("../config/db");
Dernæst importerer Datatyper fra fortsættelse.
konst { DataTypes } = kræve("efterfølger");
Datatyper lader dig indstille den nødvendige datatype for hver egenskab på din model.
Du kan oprette en ny efterfølgermodel, der repræsenterer en tabel i din database ved at kalde Definere metode på din sequelize-instans.
Det Definere metoden tager to argumenter: Modelnavnet og et attributobjekt. Modelnavnet repræsenterer modellens navn. Attributobjektet repræsenterer kolonnerne i databasen, hvor hver egenskab repræsenterer en kolonne.
Her er et eksempel på en efterfølgermodel:
konst Bruger = sq.define("bruger", {
e-mail: {
type: DataTyper. SNOR,
allowNull: falsk,
primærnøgle: rigtigt,
},fulde navn: {
type: DataTyper. SNOR,
},
alder: {
type: DataTyper. HELTAL,
},
ansat: {
type: DataTyper. BOOLEAN,
standard værdi: falsk,
},
});
Kodeblokken ovenfor definerer en Bruger model med en e-mail, fulde navn, alder, og ansat ejendomme.
Det e-mail egenskaben er en strengtype, der ikke må være tom (allowNull: falsk) og fungerer også som den primære nøgle til Bruger bord (primærnøgle: sand). Det fulde navn og alder egenskaben er en streng (Datatyper. SNOR) og heltalstype (Datatyper. HELTAL), henholdsvis. Det ansat egenskaben er en boolesk type med en standardværdi på falsk, hvilket betyder, at hvis det ikke er angivet, vil det automatisk blive sat til falsk i databasen.
Ring derefter til synkronisere metode på din model. Denne metode tager et konfigurationsobjekt som et argument. Afhængigt af mulighederne i konfigurationsobjektet, vil synkronisere metode kan:
- User.sync(): Opret tabellen, hvis den ikke findes, og gør ingenting, hvis den eksisterer.
- User.sync({ force: true }): Opret tabellen og slip den første, hvis den allerede eksisterer.
- User.sync({ alter: true }): Tjek den aktuelle tilstand af tabellen i databasen og udfør nødvendige ændringer i tabellen for at få den til at matche modellen.
For eksempel:
User.sync().then(() => {
konsol.log("Brugermodel synkroniseret");
});
Kodeblokken ovenfor opretter databasetabellen for Bruger model, hvis det ikke eksisterer, og gør intet, hvis det eksisterer.
Til sidst eksporterer du din model:
modul.exports = Bruger;
Forespørgsel i en PostgreSQL-database
Sequelize tilbyder forskellige metoder, der giver dig mulighed for at interagere med din PostgreSQL-database uden at skrive råt SQL kommandoer.
Gemmer data til PostgreSQL
For at gemme data til en PostgreSQL-database skal du kalde skab metode på din model og videregive et objekt, der implementerer PostgreSQL-modellen som et argument.
For eksempel:
konst mike = User.create({
e-mail: "[email protected]",
fulde navn: "Mike Smith",
alder: 30,
ansat: rigtigt,
});
Kodeblokken ovenfor opretter en Bruger forekomst af mike i din database og autogenererer et unikt id.
Henter data fra PostgreSQL
Data kan hentes på flere måder fra en PostgreSQL-database ved hjælp af sequelize, men det afhænger af arten af de data, du ønsker at modtage.
De mest almindelige metoder til at hente data er find en og findAlle metoder. Det findAlle returnerer alle dataforekomster, der opfylder en given forespørgsel, mens find en returnerer den første instans, der opfylder forespørgslen.
For eksempel:
// Find alle brugere
konst brugere = vente Bruger.findAlle();
Ovenstående kode vil returnere alle Bruger instanser i databasen.
Du kan filtrere gennem de returnerede data ved hjælp af hvor udmelding. Denne erklæring giver dig mulighed for at tilføje visse betingelser til forespørgslen. Din forespørgsel returnerer kun forekomster, der opfylder disse betingelser.
For eksempel:
Bruger.findAlle({
hvor: {
ansat: falsk
}
});
Ovenstående kode vil returnere alle Bruger tilfælde med deres ansat egenskab sat til falsk i databasen.
Opdatering af data på PostgreSQL
Du kan opdatere data på PostgreSQL-databasen ved at ringe til opdatering metode og sende et filter som argument.
For eksempel:
vente User.update({ ansat: rigtigt }, {
hvor: {
ansat: falsk
}
});
Ovenstående kode ændrer alle Bruger tilfælde med en ansat Værdi af falsk til rigtigt.
Alternativt kan du opdatere data ved manuelt at ændre de egenskaber, du vil ændre, og kalde til Gemme metode på instansen.
For eksempel:
konst brugerMike = vente User.findOne({ hvor: { e-mail: "[email protected]" } });
hvis(brugerMike !== nul) {
userMike.email = "[email protected]"
vente userMike.save()
}
Ovenstående kode forespørger databasen for en bruger, der har e-mailen "[email protected]" ved hjælp af find en metode. Hvis brugeren bliver fundet, tildeler den e-mail-egenskaben til "[email protected]" og kalder Gemme metode til at opdatere databasen.
Sletning af data på PostgreSQL
Du kan slette data på PostgreSQL ved at ringe til ødelægge metode og sende et filter som argument.
For eksempel:
vente User.destroy({
hvor: {
e-mail: "[email protected]"
}
});
Ovenstående kode forespørger databasen for en bruger med e-mailen "[email protected]" og sletter brugeren fra databasen.
Fordele ved at bruge PostgreSQL med Sequlize
Det kan være besværligt at skrive rå SQL-forespørgsler for at interagere med en PostgreSQL-database. Med Sequelize kan du nemt definere modeller, skabe associationer mellem dem og forespørge databasen med en enkel og intuitiv API. Alternativt kan du bruge andre ORM'er, såsom TypeORM, til at interagere med en PostgreSQL-database uden besværet med at skrive rå SQL-forespørgsler.