Sequelize är en Node.js objektrelationell mappare (ORM) som tillhandahåller ett lättanvänt API för relationsdatabaser som Oracle, PostgreSQL, MySQL, MariaDB, SQLite och mer.
PostgreSQL är ett allmänt använt open-source relationsdatabashanteringssystem (RDBMS) känt för sina omfattande funktioner, utmärkt säkerhet och skalbarhet.
PostgreSQL är kompatibel med flera programmeringsspråk, inklusive JavaScript, vilket gör det till ett idealiskt val för webb- och datadrivna applikationer. Här får du lära dig att sätta upp en Postgres-databas i Node.js med hjälp av Sequelize.
Steg 1: Installera beroenden
Innan du kan använda PostgreSQL måste du installera det på ditt system. För att ladda ner PostgreSQL, navigera till PostgreSQL webbplats och välj ditt operativsystem. Om du stöter på problem under den här processen på macOS, kolla in installera PostgreSQL på macOS.
Alternativt kan du använda PostgreSQL i molnet genom att utnyttja plattformar som t.ex ElephantSQL som erbjuder PostgreSQL som en tjänst.
Installera sedan uppföljare genom att köra följande kommando:
npm installation uppföljare
Installera sedan PostgreSQL-databasdrivrutinen genom att köra kommandot nedan:
npm installera pg pg-hstore
Steg 2: Ansluta till en PostgreSQL-databas
I ditt projekts källkatalog skapar du en config mapp. I den config mapp, skapa en db.js fil. Den här filen kommer att innehålla all kod som kopplar din Node.js-applikation till en PostgreSQL-databas.
Nästa, i din db.js fil, importera Uppföljare från uppföljare.
konst { Sequelize } = behöva("uppföljning");
Därefter måste du skapa en Uppföljare exempel. Den här instansen tar anslutningsparametrar som databasnamn, användarnamn och lösenord som argument. Alternativt tar den en enkel anslutnings-URI som ett argument.
Till exempel:
// Anslutningsparametrar
konst uppföljare = ny Uppföljare('databas', 'Användarnamn', 'Lösenord')
// med URI
konst uppföljare = ny Uppföljare (process.env. POSTGRESQL_DB_URI)
Dessutom tar denna konstruktor ett konfigurationsobjekt som ett valfritt argument.
Testa sedan din uppföljningsanslutning genom att lägga till koden under din db.js fil:
konst testDbConnection = asynkron () => {
Prova {
vänta sequelize.authenticate();
trösta.logga("Anslutningen har upprättats framgångsrikt.");
} fånga (fel) {
trösta.fel("Kan inte ansluta till databasen:", fel);
}
};
Kodblocket ovan kallar uppföljare.autentisera() metod för att testa om anslutningen är OK och skriver ut "Anslutning har upprättats framgångsrikt." att trösta om det är det. Om det finns ett anslutningsfel skrivs "Kan inte ansluta till databasen:" tillsammans med felet.
Exportera slutligen uppföljningsinstansen och testDbConnection fungera.
modul.exports = { kvm: sequelize, testDbConnection };
Steg 3: Skapa en uppföljningsmodell
I ditt projekts källkatalog skapar du en modeller mapp. Den här mappen kommer att innehålla alla dina uppföljningsmodeller. Skapa sedan en modellfil. Namnet du ger filen bör ge information om modellens representation.
Importera sequelize-instansen i din modellfil.
// exempel.js
konst { sq } = behöva("../config/db");
Därefter importerar du Datatyper från uppföljare.
konst { DataTypes } = behöva("uppföljning");
Datatyper låter dig ställa in den datatyp som krävs för varje egenskap på din modell.
Du kan skapa en ny uppföljningsmodell som representerar en tabell i din databas genom att anropa definiera metod på din uppföljningsinstans.
De definiera Metoden tar två argument: modellnamnet och ett attributobjekt. Modellnamnet representerar modellens namn. Attributobjektet representerar kolumnerna i databasen, där varje egenskap representerar en kolumn.
Här är ett exempel på en uppföljningsmodell:
konst Användare = sq.define("användare", {
e-post: {
typ: DataTypes. STRÄNG,
allowNull: falsk,
primärnyckel: Sann,
},fullständiga namn: {
typ: DataTypes. STRÄNG,
},
ålder: {
typ: DataTypes. HELTAL,
},
anställd: {
typ: DataTypes. BOOLEAN,
standardvärde: falsk,
},
});
Kodblocket ovan definierar en Användare modell med en e-post, fullständiga namn, ålder, och anställd egenskaper.
De e-post egenskapen är en strängtyp som inte kan vara tom (allowNull: falskt) och fungerar också som den primära nyckeln för Användare bord (primärnyckel: sant). De fullständiga namn och den ålder egenskapen är en sträng (Datatyper. STRÄNG) och heltalstyp (Datatyper. HELTAL), respektive. De anställd egenskapen är en boolesk typ med standardvärdet på falsk, vilket betyder att om det inte anges kommer det automatiskt att ställas in på false i databasen.
Ring sedan till synkronisera metod på din modell. Denna metod tar ett konfigurationsobjekt som ett argument. Beroende på alternativen i konfigurationsobjektet kan synkronisera metod kan:
- User.sync(): Skapa tabellen om den inte finns och gör ingenting om den finns.
- User.sync({ force: true }): Skapa tabellen och släpp den första om den redan finns.
- User.sync({ alter: true }): Kontrollera tabellens aktuella status i databasen och utför nödvändiga ändringar i tabellen för att få den att matcha modellen.
Till exempel:
User.sync().then(() => {
trösta.logga("Användarmodell synkroniserad");
});
Kodblocket ovan skapar databastabellen för Användare modell om det inte finns och gör ingenting om det finns.
Exportera slutligen din modell:
modul.exports = Användare;
Fråga efter en PostgreSQL-databas
Sequelize tillhandahåller olika metoder som låter dig interagera med din PostgreSQL-databas utan att skriva rått SQL-kommandon.
Spara data till PostgreSQL
För att spara data till en PostgreSQL-databas, anropa skapa metod på din modell och skicka ett objekt som implementerar PostgreSQL-modellen som ett argument.
Till exempel:
konst mike = User.create({
e-post: "[email protected]",
fullständiga namn: "Mike Smith",
ålder: 30,
anställd: Sann,
});
Kodblocket ovan skapar en Användare instans av mikrofon i din databas och autogenererar ett unikt id.
Hämtar data från PostgreSQL
Data kan hämtas på flera sätt från en PostgreSQL-databas med hjälp av sequelize, men det beror på vilken typ av data du vill ta emot.
De vanligaste metoderna för att hämta data är hitta en och hitta alla metoder. De hitta alla returnerar alla datainstanser som uppfyller en given fråga, medan hitta en returnerar den första instansen som uppfyller frågan.
Till exempel:
// Hitta alla användare
konst användare = vänta User.findAll();
Ovanstående kod kommer att returnera alla Användare instanser i databasen.
Du kan filtrera igenom de returnerade data med hjälp av var påstående. Detta uttalande låter dig lägga till vissa villkor till frågan. Din fråga kommer bara att returnera instanser som uppfyller dessa villkor.
Till exempel:
User.findAll({
var: {
anställd: falsk
}
});
Ovanstående kod kommer att returnera alla Användare instanser med sina anställd egenskapen inställd på falsk i databasen.
Uppdatera data på PostgreSQL
Du kan uppdatera data på PostgreSQL-databasen genom att anropa uppdatering metod och skicka ett filter som ett argument.
Till exempel:
vänta User.update({ anställd: Sann }, {
var: {
anställd: falsk
}
});
Ovanstående kod ändrar alla Användare instanser med en anställd värdet av falsk till Sann.
Alternativt kan du uppdatera data genom att manuellt ändra egenskaperna du vill ändra och anropa spara metod på instansen.
Till exempel:
konst userMike = vänta User.findOne({ var: { e-post: "[email protected]" } });
om(användareMike !== null) {
userMike.email = "[email protected]"
vänta userMike.save()
}
Ovanstående kod frågar databasen för en användare som har e-postadressen "[email protected]" med hjälp av hitta en metod. Om användaren hittas tilldelar den e-postegenskapen till "[email protected]" och anropar spara metod för att uppdatera databasen.
Ta bort data på PostgreSQL
Du kan radera data på PostgreSQL genom att ringa förstöra metod och skicka ett filter som ett argument.
Till exempel:
vänta User.destroy({
var: {
e-post: "[email protected]"
}
});
Ovanstående kod frågar databasen efter en användare som har e-postadressen "[email protected]" och tar bort användaren från databasen.
Fördelar med att använda PostgreSQL med Sequlize
Att skriva råa SQL-frågor för att interagera med en PostgreSQL-databas kan vara besvärligt. Med Sequelize kan du enkelt definiera modeller, skapa associationer mellan dem och fråga i databasen med ett enkelt och intuitivt API. Alternativt kan du använda andra ORM: er, som TypeORM, för att interagera med en PostgreSQL-databas utan att behöva skriva råa SQL-frågor.