Kā lietot PostgreSQL ar Sequelize pakalpojumā Node.js

Kā lietot PostgreSQL ar Sequelize pakalpojumā Node.js
Tādi lasītāji kā jūs palīdz atbalstīt MUO. Veicot pirkumu, izmantojot saites mūsu vietnē, mēs varam nopelnīt filiāles komisiju. Lasīt vairāk.

Sequelize ir Node.js objektu relāciju kartētājs (ORM), kas nodrošina viegli lietojamu API relāciju datu bāzēm, piemēram, Oracle, PostgreSQL, MySQL, MariaDB, SQLite un citām.





PostgreSQL ir plaši izmantota atvērtā koda relāciju datu bāzes pārvaldības sistēma (RDBMS), kas ir slavena ar tās plašajām funkcijām, izcilo drošību un mērogojamību.





DIENAS VIDEO MAKEUSEOF

PostgreSQL ir saderīgs ar vairākām programmēšanas valodām, tostarp JavaScript, padarot to par ideālu izvēli tīmekļa un datu vadītām lietojumprogrammām. Šeit jūs uzzināsit, kā iestatīt Postgres datu bāzi pakalpojumā Node.js, izmantojot Sequelize.





1. darbība: atkarību instalēšana

Lai varētu izmantot PostgreSQL, tas jāinstalē savā sistēmā. Lai lejupielādētu PostgreSQL, dodieties uz PostgreSQL vietne un izvēlieties savu operētājsistēmu. Ja šī procesa laikā operētājsistēmā macOS rodas problēmas, pārbaudiet PostgreSQL instalēšana operētājsistēmā macOS .

Varat arī izmantot PostgreSQL mākonī, izmantojot tādas platformas kā ElephantSQL kas piedāvā PostgreSQL kā pakalpojumu.



klēpjdators neatpazīst ārējo cieto disku

Tālāk instalējiet turpinājums izpildot šādu komandu:

 npm install sequelize 

Pēc tam instalējiet PostgreSQL datu bāzes draiveri, izpildot tālāk norādīto komandu:





 npm install pg pg-hstore 

2. darbība. Savienojuma izveide ar PostgreSQL datu bāzi

Sava projekta avota direktorijā izveidojiet a konfigurācija mapi. Iekš konfigurācija mapi, izveidojiet a db.js failu. Šajā failā būs viss kods, kas savieno jūsu Node.js lietojumprogrammu ar PostgreSQL datu bāzi.

Tālāk, jūsu db.js fails, imports Turpinājums no turpinājums .





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

Tālāk jums ir jāizveido a Turpinājums piemēram. Šajā gadījumā kā argumenti tiek izmantoti savienojuma parametri, piemēram, datu bāzes nosaukums, lietotājvārds un parole. Alternatīvi, kā arguments tiek izmantots viens savienojuma URI.

Piemēram:

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

// with URI
const sequelize = new Sequelize(process.env.POSTGRESQL_DB_URI)

Turklāt šis konstruktors izmanto konfigurācijas objektu kā izvēles argumentu.

Pēc tam pārbaudiet savu secīgo savienojumu, pievienojot kodu zem sava db.js fails:

 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);
  }
};

Iepriekš esošais koda bloks izsauc turpinājums . autentificēt () metode, lai pārbaudītu, vai savienojums ir kārtībā, un izdrukā 'Savienojums ir veiksmīgi izveidots'. lai mierinātu, ja tā ir. Ja rodas savienojuma kļūda, kopā ar kļūdu tiek parādīts ziņojums “Nevar izveidot savienojumu ar datu bāzi:”.

Visbeidzot, eksportējiet secības gadījumu un testDbConnection funkciju.

 module.exports = { sq: sequelize, testDbConnection }; 

3. darbība. Sequelize modeļa izveide

Sava projekta avota direktorijā izveidojiet a modeļiem mapi. Šajā mapē būs visi jūsu secīgie modeļi. Pēc tam izveidojiet modeļa failu. Nosaukumam, ko piešķirat failam, ir jāsniedz informācija par modeļa attēlojumu.

Savā modeļa failā importējiet secības instanci.

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

Tālāk importējiet Datu tipi no turpinājums .

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

Datu tipi ļauj iestatīt nepieciešamo datu tipu katram jūsu modeļa īpašumam.

Varat izveidot jaunu secības modeli, kas attēlo tabulu jūsu datubāzē, izsaucot definēt metodi savā secības instancē.

The definēt metodei ir divi argumenti: modeļa nosaukums un atribūtu objekts. Modeļa nosaukums apzīmē modeļa nosaukumu. Atribūtu objekts apzīmē datu bāzes kolonnas, un katrs rekvizīts apzīmē kolonnu.

Tālāk ir sniegts turpinājuma modeļa piemērs.

 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,
  },
});

Iepriekš minētais koda bloks definē a Lietotājs modelis ar e-pasts , pilnais vārds , vecums , un nodarbināts īpašības.

The e-pasts rekvizīts ir virknes veids, kas nevar būt tukšs ( allowNull: nepatiess ) un darbojas arī kā primārā atslēga Lietotājs tabula ( primārā atslēga: patiesa ). The pilnais vārds un vecums rekvizīts ir virkne ( Datu tipi.STRING ) un vesela skaitļa veids ( DataTypes.INTEGER ), attiecīgi. The nodarbināts rekvizīts ir Būla tips ar noklusējuma vērtību viltus , kas nozīmē, ka, ja tas nav norādīts, datu bāzē tas automātiski tiks iestatīts uz false.

Tālāk zvaniet uz sinhronizēt metode jūsu modelī. Šī metode izmanto konfigurācijas objektu kā argumentu. Atkarībā no opcijām konfigurācijas objektā, sinhronizēt metode var:

  • User.sync() : izveidojiet tabulu, ja tā nepastāv, un nedara neko, ja tā pastāv.
  • User.sync({ force: true }) : izveidojiet tabulu un nometiet pirmo tabulu, ja tā jau pastāv.
  • User.sync({ alter: true }) : pārbaudiet pašreizējo tabulas stāvokli datu bāzē un veiciet nepieciešamās izmaiņas tabulā, lai tā atbilstu modelim.

Piemēram:

 User.sync().then(() => { 
  console.log("User Model synced");
});

Iepriekš esošais koda bloks izveido datu bāzes tabulu Lietotājs modelis, ja tas neeksistē, un nedara neko, ja tas pastāv.

Visbeidzot, eksportējiet savu modeli:

 module.exports = User; 

Vaicājumi PostgreSQL datu bāzē

Sequelise nodrošina dažādas metodes, kas ļauj mijiedarboties ar PostgreSQL datu bāzi, nerakstot neapstrādātu SQL komandas .

Datu saglabāšana PostgreSQL

Lai saglabātu datus PostgreSQL datu bāzē, zvaniet uz izveidot metodi savā modelī un nododiet objektu, kas ievieš PostgreSQL modeli kā argumentu.

Piemēram:

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

Iepriekš minētais koda bloks izveido a Lietotājs gadījums maiks savā datubāzē un automātiski ģenerē unikālu ID.

Datu izguve no PostgreSQL

Datus var izgūt vairākos veidos no PostgreSQL datu bāzes, izmantojot secību, taču tas ir atkarīgs no datu veida, ko vēlaties saņemt.

Visizplatītākās datu izgūšanas metodes ir atrast vienu un atrast visu metodes. The atrast visu atgriež visus datu gadījumus, kas apmierina doto vaicājumu, kamēr atrast vienu atgriež pirmo gadījumu, kas apmierina vaicājumu.

Piemēram:

 // Find all users 
const users = await User.findAll();

Iepriekš minētais kods atgriezīs visu Lietotājs gadījumus datu bāzē.

Varat filtrēt atgrieztos datus, izmantojot kur paziņojums, apgalvojums. Šis paziņojums ļauj vaicājumam pievienot noteiktus nosacījumus. Jūsu vaicājumā tiks atgriezti tikai gadījumi, kas atbilst šiem nosacījumiem.

Piemēram:

 User.findAll({ 
  where: {
    employed: false
  }
});

Iepriekš minētais kods atgriezīs visu Lietotājs gadījumi ar viņu nodarbināts rekvizīts iestatīts uz viltus datubāzē.

PostgreSQL datu atjaunināšana

Jūs varat atjaunināt datus PostgreSQL datubāzē, zvanot uz Atjaunināt metodi un filtra nodošanu kā argumentu.

Piemēram:

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

Iepriekš minētais kods maina visu Lietotājs gadījumi ar an nodarbināts vērtība viltus uz taisnība .

Varat arī atjaunināt datus, manuāli pārveidojot rekvizītus, kurus vēlaties mainīt, un izsaucot saglabāt metode konkrētajā gadījumā.

Piemēram:

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

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

Iepriekš minētais kods vaicā datubāzē lietotājam, kuram ir e-pasts “mike@email.com”, kas izmanto atrast vienu metodi. Ja lietotājs tiek atrasts, tas atkārtoti piešķir e-pasta rekvizītu “newMike@gmail.com” un izsauc saglabāt metode datu bāzes atjaunināšanai.

PostgreSQL datu dzēšana

Varat izdzēst datus vietnē PostgreSQL, zvanot uz iznīcināt metodi un filtra nodošanu kā argumentu.

Piemēram:

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

Iepriekš minētais kods vaicā datubāzē lietotājam, kuram ir e-pasts “newMike@gmail.com”, un izdzēš lietotāju no datu bāzes.

Priekšrocības, izmantojot PostgreSQL ar Sequlize

Neapstrādātu SQL vaicājumu rakstīšana, lai mijiedarbotos ar PostgreSQL datu bāzi, var radīt grūtības. Izmantojot Sequelize, varat viegli definēt modeļus, izveidot starp tiem asociācijas un veikt vaicājumus datu bāzē, izmantojot vienkāršu un intuitīvu API. Varat arī izmantot citus ORM, piemēram, TypeORM, lai mijiedarbotos ar PostgreSQL datu bāzi bez apgrūtinājumiem ar neapstrādātu SQL vaicājumu rakstīšanu.