Hur man använder PostgreSQL med Sequelize i Node.js

Hur man använder PostgreSQL med Sequelize i Node.js
Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

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.





MAKEUSE AV DAGENS VIDEO

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 install sequelize 

Installera sedan PostgreSQL-databasdrivrutinen genom att köra kommandot nedan:





 npm install 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 .





 const { Sequelize } = require("sequelize"); 

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.

ska jag använda mbr eller gpt för ssd

Till exempel:

 // Connection parameters 
const sequelize = new Sequelize('database', 'username', 'password')

// with URI
const sequelize = new Sequelize(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:

 const testDbConnection = async () => { 
  try {
    await sequelize.authenticate();
    console.log("Connection has been established successfully.");
  } catch (error) {
    console.error("Unable to connect to the database:", error);
  }
};

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.

 module.exports = { sq: 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.

 // example.js 
const { sq } = require("../config/db");

Därefter importerar du Datatyper från uppföljare .

 const { DataTypes } = require("sequelize"); 

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.

hur man tar reda på ditt moderkort

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:

 const User = sq.define("user", { 
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    primaryKey: true,
  },

  fullName: {
    type: DataTypes.STRING,
  },
  
  age: {
    type: DataTypes.INTEGER,
  },

  employed: {
    type: DataTypes.BOOLEAN,
    defaultValue: false,
  },
});

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 ( DataTypes.STRING ) och heltalstyp ( DataTypes.INTEGER ), 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(() => { 
  console.log("User Model synced");
});

Kodblocket ovan skapar databastabellen för Användare modell om det inte finns och gör ingenting om det finns.

Exportera slutligen din modell:

 module.exports = User; 

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:

 const mike = User.create({ 
  email: "mike@email.com",
  fullName: "Mike Smith",
  age: 30,
  employed: true,
});

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.

appar som fungerar med android auto

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:

 // Find all users 
const users = await 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({ 
  where: {
    employed: false
  }
});

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:

 await User.update({ employed: true }, { 
  where: {
    employed: false
  }
});

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:

 const userMike = await User.findOne({ where: { email: "mike@email.com" } }); 

if(userMike !== null) {
  userMike.email = "newMike@gmail.com"
  await userMike.save()
}

Ovanstående kod frågar databasen för en användare som har e-postadressen 'mike@email.com' med hjälp av hitta en metod. Om användaren hittas tilldelar den e-postegenskapen till 'newMike@gmail.com' 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:

 await User.destroy({ 
  where: {
    email: "newMike@gmail.com"
  }
});

Ovanstående kod frågar databasen efter en användare som har e-postadressen 'newMike@gmail.com' 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.