287 oxunuşlar

Postgres-ə Sequelize istifadə edərək Express Application-i bağlamaq üçün necə

tərəfindən Michael Ikoko8m2025/06/21
Read on Terminal Reader

Çox uzun; Oxumaq

VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu.
featured image - Postgres-ə Sequelize istifadə edərək Express Application-i bağlamaq üçün necə
Michael Ikoko HackerNoon profile picture
0-item

Introduksiya

PostgreSQL (Postgres kimi kısaltılmış) yazılım proqramlarının qurulmasında ən çox istifadə edilən veritabanlardan biridir. Postgres, general-purpose, open-source, object-relational database management system (RDBMS)dir. Postgres istifadə etmənin avantajlarından biri, relational (SQL) və non-relational (NoSQL) querying üçün köməkdir.


VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu.


Xatırladaq ki, bu məsələnin nəticəsi belədir:

Oracle, Postgres, MySQL, MariaDB, SQLite, SQL Server və daha çox üçün modern TypeScript və Node.js ORM

Oracle, Postgres, MySQL, MariaDB, SQLite, SQL Server və daha çox üçün modern TypeScript və Node.js ORM


İşləmək üçün hazırlıq proseduru hazırlanır, işləmək üçün hazırlıq proseduru hazırlanır, işləmək proseduru hazırlanır.


VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu.

Əvvəllər

Bu tutorialdan istifadə etmək üçün aşağıdakılara ehtiyacınız olacaq:

  • Teksti redaktoru (təkcə VS Code)
  • Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə
  • Node.js sizin bilgisayarınızda
  • EXPRESS-in əsas xüsusiyyətləri
  • “Postgres”un yerdə və ya uzaqlaşdırılmış olaraq çalışdığı bir instansiya

Proqramın qurulması

Biz bir Express proqramı yaratmaq və gerekli paketləri yükləmək üçün uygun dosyalar və kataloglar qurmaqla başlayacağıq.


  1. Create the project directory:

        mkdir tasks-manager-api
    
  2. Navigate to the project directory:

        cd tasks-manager-api
    
  3. Initialize the NPM package by running the following command to create a package.json file with default settings:

        npm init -y
    
  4. Install Express and other core dependencies:

       npm install express express-async-errors dotenv && npm install nodemon --save-dev
    
  5. Install Postgres driver for Node.js:

       npm install pg
    
  6. Install Sequelize:

       npm install sequelize
    
  7. In the root directory, create the models and utils folders:

    mkdir models utils
    
  8. In the root directory, create a .env file, which will contain the server’s port number and the database URL of any Postgres instance:

    PORT=5000
    DATABASE_URL=postgres://<user>:<password>@<host>:<port>/<database>
    
  9. In the root directory, create the index.js file, which is the application entry point:

       touch index.js
    
  10. Set up the command to run the local development server by editing the scripts object in package.json:

    {
        //…
        "scripts": {
            "test": "echo \"Error: no test specified\" && exit 1",
            "dev": "nodemon index.js",
            "start": "node index.js"
        },
        //…
    }
    

Proqramın strukturu belə olmalıdır:

Konfigurasiya Sequelize

İki filmin yaradılmasıutilsDirektorluq :config.jsdb.js.

Çevrimiçi dəyişikliklər

Şirkətdəconfig.jsƏsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə.envFiltrə istifadə etməkdotenvEksport.az xəbər verir ki, buPORTDATABASE_URLÜmumilikdə, bu variantlar aplikasiyanın digər bölmələrində istifadə edilə bilər.


İŞİDconfig.jsDosyaların aşağıdaki içərişləri olmalıdır:

require('dotenv').config()

const PORT = process.env.PORT || 3000
const DATABASE_URL = process.env.DATABASE_URL

module.exports = {
    PORT,
    DATABASE_URL
}

Sequelize Instance yaratmaq

Şirkətdədb.js“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin” “Qəbələ”nin “Qəbələ”nin” “Qəbələ”nin” “Qəbələ”nin “Qəbələ”nin” “Qəbələ”ni “QDATABASE_URLBir neçə ildir ki, bu funksiyaları yaradıb.connectToDB,İnternet bazası ilə bağlı testlər aparılacaqauthenticateNövbəti məqalə: EksportconnectToDBfunksiya və sequelize instance.


İŞİDutils/db.jsDosyaların aşağıdaki içərişləri olmalıdır:

const Sequelize = require("sequelize");
const { DATABASE_URL } = require("./config");

const sequelize = new Sequelize(DATABASE_URL)

const connectToDB = async () => {
    try {
        await sequelize.authenticate()
        console.log("Database connection established successfully.")
    } catch (error) {
        console.log("Unable to connect to the database:", error)
        return process.exit(1)
    }
    return null
}

module.exports = {
    connectToDB,
    sequelize
}


Task modelinin yaradılması

VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltmasıdır.TaskSürücüləri genişləndirən modelModelSınaq və çağırışModel.init(attributes, options)funksiyaları


ŞirkətdəmodelsDirektorun yaradılmasıtask.jsSonraki İçerikFilterlər

const {Model, DataTypes} = require("sequelize")
const {sequelize} = require("../utils/db")

class Task extends Model {}

Task.init({
    id: {
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    title: {
        type: DataTypes.STRING,
        allowNull: false
    },
    completed: {
        type: DataTypes.BOOLEAN,
        defaultValue: false
    }
}, {
    sequelize,
    modelName: "Task",
    timestamps: true,
    underscored: true,
    defaultScope: {
        attributes: {
            exclude: ["createdAt", "updatedAt"]
        }
    }
})

Task.sync()

module.exports = Task

İŞİDattributesBu parametrlərin strukturuTaskDatabase.az xəbər verir ki, buTaskModel üç xüsusiyyətə malikdir:

  • ID: hər bir rekordı təkcə tanımlamak üçün istifadə edilən otomatik artan bir birinci anahtardır.
  • Tədbirin adı: Tədbirin adını göstərən bir dəlil alanı.
  • Sonrakı məqaləBursa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa-Borsa


İŞİDoptions“Snickers” modelinin modelinə necə baxılacağını açıqlayıb.TaskModelin aşağıdaki variantları var:

  • Xatırladaq ki, bu problemin başlanğıcı ilə bağlıdır.
  • ModelName: Database-də yaradılan tabelanın adı.
  • Xatırladaq ki, bu problemin başlanğıcına səbəb ola bilər.
  • Xatırladaq ki, ABŞ-ın İŞİD-ə qarşı hökmdarlıqla qarşılaşdığını bildirən ABŞ-ın İŞİD-in hökmdarlığına qarşı hökmdarlıq edib.
  • Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifə


İŞİDTask.sync()VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu.

Ekspres serverləri

Son olaraq, bütün bunları Express serveri yaratmaqla birləşdirirsiniz.index.jsƏsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə


İŞİDstart“Express” serverinin başlanğıcını davam etdirirstartBu funksiya ilk olaraq bazaya bağlanmaqla test edir.connectToDB()Əgər bağlantı uğurlu olursa, Express serveri başlatır, bu da spesifik portda dinləyir.


İŞİDindex.jsDosyaların aşağıdaki içərişləri vardır:

require("express-async-errors");
const express = require("express");
const app = express();
const { PORT } = require("./utils/config");
const { connectToDB } = require("./utils/db");
const Task = require("./models/task");

// middlewares
app.use(express.json());

// routes
app.get("/api/tasks", async (req, res) => {
  const tasks = await Task.findAll();
  res.json({
    message: "List of tasks",
    tasks: tasks,
  });
});

app.post("/api/tasks", async (req, res) => {
  const { title } = req.body;
  const task = await Task.create({ title });
  res.status(201).json({
    message: "Task created successfully",
    task,
  });
});

app.patch("/api/tasks/:id/toggle-completed", async (req, res) => {
  const { id } = req.params;
  const task = await Task.findByPk(id);
  if (!task) {
    return res.status(404).json({ message: "Task not found" });
  }
  task.completed = !task.completed;
  await task.save();
  res.json({
    message: task.completed
      ? "Task marked as completed"
      : "Task marked as not completed",
    task,
  });
});

app.delete("/api/tasks/:id", async (req, res) => {
  const { id } = req.params;
  const task = await Task.findByPk(id);
  if (!task) {
    return res.status(404).json({ message: "Task not found" });
  }
  await task.destroy();
  res.json({
    message: "Task deleted successfully",
  });
});

const start = async () => {
  try {
    await connectToDB();
    app.listen(PORT, console.log(`Server is running on port ${PORT}`));
  } catch (error) {
    console.error(error);
    process.exit(1);
  }
};

start();

API Endpoint xəritədə

Artıq API terminalləri test etməyə başlayabilirsiniz:

  1. Yeni bir iş yaratmaq — POST /api/tasks:

Post Request

  1. Bütün işlərin listəsi — GET /api/tasks:

Get Request

  1. Pərəstiş statusu Toggle — PATCH /api/tasks/:id/toggle-completed

Patch Request

  1. Əsas səhifə / TASK / TASK:

Delete Request

Sonrakı

Artıq bir Express proqramı Sequelize vasitəsilə Postgres bazasına bağlamanın yolunu bilirsiniz.Siz basit bir task manager API-ni qurdunuz və prosesdə Sequelize-ni konfigür etdiyiniz, Sequelize-ni Postgres instansiyasına bağladınız.TaskMəşhur model və API-nin yaradılması.


Hazırda “Logic” jurnalında yazılanindex.jsƏvvəlki tutoriallarda bu kod bazasını kontrolörlər, ruttorlar və Sequelize migrantları ilə daha genişlənən bir strukturda yeniləyəcəyik.


Daha sonra oxumağa çalışın ki, buDokumentacılıq qadağasıModel sorğu, validasyonlar, asociasiyalar və daha çox şey haqqında daha çox bilgi edin.


Bu tutorial üçün tam kodu təqdim edə bilərsiniz.GitHub.

resursları

  • Əsas səhifə (V6)
  • PostgreSQL nədir?
  • Relational Databases ilə Sequelize – FullStackOpen istifadə
  • Express.js proqramı


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks