Lesere som deg er med på å støtte MUO. Når du foretar et kjøp ved å bruke lenker på nettstedet vårt, kan vi tjene en tilknyttet provisjon. Les mer.

Sequelize er en Node.js objektrelasjonell kartlegger (ORM) som gir en brukervennlig API for relasjonsdatabaser som Oracle, PostgreSQL, MySQL, MariaDB, SQLite og mer.

PostgreSQL er et mye brukt åpen kildekode relasjonsdatabaseadministrasjonssystem (RDBMS) kjent for sine omfattende funksjoner, utmerket sikkerhet og skalerbarhet.

PostgreSQL er kompatibel med flere programmeringsspråk, inkludert JavaScript, noe som gjør det til et ideelt valg for nett- og datadrevne applikasjoner. Her lærer du å sette opp en Postgres-database i Node.js ved hjelp av Sequelize.

Trinn 1: Installere avhengigheter

Før du kan bruke PostgreSQL, må du installere det på systemet ditt. For å laste ned PostgreSQL, naviger til PostgreSQL nettsted og velg ditt operativsystem. Hvis du får problemer under denne prosessen på macOS, sjekk ut installere PostgreSQL på macOS.

Alternativt kan du bruke PostgreSQL på skyen ved å utnytte plattformer som

instagram viewer
ElephantSQL som tilbyr PostgreSQL som en tjeneste.

Neste, installer oppfølger ved å kjøre følgende kommando:

npm installeringsoppfølger

Installer deretter PostgreSQL-databasedriveren ved å kjøre kommandoen nedenfor:

npm installer pg pg-hstore

Trinn 2: Koble til en PostgreSQL-database

I prosjektets kildekatalog oppretter du en konfig mappe. I konfig mappe, opprette en db.js fil. Denne filen vil inneholde all koden som kobler din Node.js-applikasjon til en PostgreSQL-database.

Neste, i din db.js fil, import Oppfølger fra oppfølger.

konst { Sequelize } = krever("oppfølger");

Deretter må du opprette en Oppfølger forekomst. Denne forekomsten tar tilkoblingsparametere som databasenavn, brukernavn og passord som argumenter. Alternativt tar den en enkelt tilkoblings-URI som argument.

For eksempel:

// Tilkoblingsparametere
konst oppfølger = ny Oppfølger('database', 'brukernavn', 'passord')

// med URI
konst oppfølger = ny Oppfølger (process.env. POSTGRESQL_DB_URI)

I tillegg tar denne konstruktøren et konfigurasjonsobjekt som et valgfritt argument.

Deretter tester du oppfølgerforbindelsen din ved å legge til koden under db.js fil:

konst testDbConnection = asynkron () => {
prøve {
avvente sequelize.authenticate();
konsoll.Logg("Tilkoblingen er opprettet vellykket.");
} å fange (feil) {
konsoll.feil("Kan ikke koble til databasen:", feil);
}
};

Kodeblokken ovenfor kaller oppfølger.autentisere() metode for å teste om tilkoblingen er OK og skriver ut "Tilkobling er opprettet vellykket." å trøste hvis det er det. Hvis det er en tilkoblingsfeil, skrives det ut "Kan ikke koble til databasen:" sammen med feilen.

Til slutt eksporterer du oppfølgerforekomsten og testDbConnection funksjon.

modul.exports = { sq: oppfølger, testDbConnection };

Trinn 3: Lage en oppfølgermodell

I prosjektets kildekatalog oppretter du en modeller mappe. Denne mappen vil inneholde alle oppfølgermodellene dine. Deretter oppretter du en modellfil. Navnet du gir filen skal gi informasjon om modellens representasjon.

Importer oppfølgerforekomsten i modellfilen din.

// eksempel.js
konst { sq } = krever("../config/db");

Deretter importerer du Datatyper fra oppfølger.

konst { DataTypes } = krever("oppfølger");

Datatyper lar deg angi den nødvendige datatypen for hver egenskap på modellen din.

Du kan opprette en ny oppfølgermodell som representerer en tabell i databasen din ved å ringe definere metode på oppfølgerforekomsten din.

De definere metoden tar to argumenter: modellnavnet og et attributtobjekt. Modellnavnet representerer navnet på modellen. Attributtobjektet representerer kolonnene i databasen, med hver egenskap som representerer en kolonne.

Her er et eksempel på en oppfølgermodell:

konst Bruker = sq.define("bruker", {
e-post: {
type: DataTyper. STRING,
allowNull: falsk,
primærnøkkel: ekte,
},

fullt navn: {
type: DataTyper. STRING,
},

alder: {
type: DataTyper. INTEGER,
},

ansatt: {
type: DataTyper. BOOLEAN,
standardverdi: falsk,
},
});

Kodeblokken ovenfor definerer en Bruker modell med en e-post, fullt navn, alder, og ansatt egenskaper.

De e-post egenskap er en strengtype som ikke kan være tom (allowNull: usant) og fungerer også som primærnøkkelen for Bruker bord (primærnøkkel: sant). De fullt navn og alder egenskapen er en streng (Datatyper. STRING) og heltallstype (Datatyper. HELTAL), henholdsvis. De ansatt egenskap er en boolsk type med en standardverdi på falsk, som betyr at hvis den ikke er spesifisert, blir den automatisk satt til usann i databasen.

Deretter ringer du synkronisere metoden på modellen din. Denne metoden tar et konfigurasjonsobjekt som et argument. Avhengig av alternativene i konfigurasjonsobjektet, vil synkronisere metoden kan:

  • User.sync(): Lag tabellen hvis den ikke eksisterer og gjør ingenting hvis den eksisterer.
  • User.sync({ force: true }): Opprett tabellen og slipp den første hvis den allerede eksisterer.
  • User.sync({ alter: true }): Sjekk gjeldende status for tabellen i databasen og utfør nødvendige endringer i tabellen for å få den til å matche modellen.

For eksempel:

User.sync().then(() => {
konsoll.Logg("Brukermodell synkronisert");
});

Kodeblokken ovenfor oppretter databasetabellen for Bruker modell hvis den ikke eksisterer og gjør ingenting hvis den eksisterer.

Til slutt eksporterer du modellen din:

modul.exports = Bruker;

Spørre en PostgreSQL-database

Sequelize tilbyr ulike metoder som lar deg samhandle med PostgreSQL-databasen din uten å skrive rått SQL-kommandoer.

Lagre data til PostgreSQL

For å lagre data til en PostgreSQL-database, ring skape metoden på modellen din og send et objekt som implementerer PostgreSQL-modellen som et argument.

For eksempel:

konst mike = User.create({
e-post: "[email protected]",
fullt navn: "Mike Smith",
alder: 30,
ansatt: ekte,
});

Kodeblokken ovenfor oppretter en Bruker tilfelle av mike i databasen din og automatisk genererer en unik id.

Henter data fra PostgreSQL

Data kan hentes på flere måter fra en PostgreSQL-database ved hjelp av sequelize, men det avhenger av arten av dataene du ønsker å motta.

De vanligste metodene for å hente data er Finn én og finnAlle metoder. De finnAlle returnerer alle dataforekomster som tilfredsstiller en gitt spørring, mens Finn én returnerer den første forekomsten som tilfredsstiller spørringen.

For eksempel:

// Finn alle brukere
konst brukere = avvente Bruker.finnAlle();

Koden ovenfor vil returnere alle Bruker forekomster i databasen.

Du kan filtrere gjennom de returnerte dataene ved å bruke hvor uttalelse. Denne setningen lar deg legge til visse betingelser for spørringen. Din forespørsel vil bare returnere forekomster som oppfyller disse betingelsene.

For eksempel:

User.findAll({
hvor: {
ansatt: falsk
}
});

Koden ovenfor vil returnere alle Bruker tilfeller med sine ansatt egenskap satt til falsk i databasen.

Oppdaterer data på PostgreSQL

Du kan oppdatere data på PostgreSQL-databasen ved å ringe Oppdater metode og sende et filter som et argument.

For eksempel:

avvente User.update({ ansatt: ekte }, {
hvor: {
ansatt: falsk
}
});

Koden ovenfor endrer alle Bruker tilfeller med en ansatt verdien av falsk til ekte.

Alternativt kan du oppdatere data ved å manuelt endre egenskapene du vil endre og ringe til lagre metode på instansen.

For eksempel:

konst brukerMike = avvente User.findOne({ hvor: { e-post: "[email protected]" } });

hvis(brukerMike !== null) {
userMike.email = "[email protected]"
avvente userMike.save()
}

Koden ovenfor spør databasen etter en bruker som har e-posten "[email protected]" ved hjelp av Finn én metode. Hvis brukeren blir funnet, tildeler den e-postegenskapen til "[email protected]" og kaller lagre metode for å oppdatere databasen.

Sletting av data på PostgreSQL

Du kan slette data på PostgreSQL ved å ringe ødelegge metode og sende et filter som et argument.

For eksempel:

avvente User.destroy({
hvor: {
e-post: "[email protected]"
}
});

Koden ovenfor spør databasen etter en bruker som har e-posten "[email protected]" og sletter brukeren fra databasen.

Fordeler med å bruke PostgreSQL med Sequlize

Å skrive rå SQL-spørringer for å samhandle med en PostgreSQL-database kan være et problem. Med Sequelize kan du enkelt definere modeller, lage assosiasjoner mellom dem og spørre databasen med en enkel og intuitiv API. Alternativt kan du bruke andre ORM-er, for eksempel TypeORM, til å samhandle med en PostgreSQL-database uten å måtte skrive rå SQL-spørringer.