287 usomaji

Jinsi ya kuunganisha programu ya Express na Postgres kwa kutumia Sequelize

kwa Michael Ikoko8m2025/06/21
Read on Terminal Reader

Ndefu sana; Kusoma

Mafunzo haya yanaelezea jinsi ya kutumia Postgres katika programu yako ya Express. Inatumia Sequelize ORM kuunganisha database na programu ya wavuti. API itakuwa na uwezo wa kuunda, orodha, update hali ya kukamilika, na kufuta kazi.
featured image - Jinsi ya kuunganisha programu ya Express na Postgres kwa kutumia Sequelize
Michael Ikoko HackerNoon profile picture
0-item

Maelezo ya

PostgreSQL (kwa kifupi kama Postgres) ni mojawapo ya mifumo ya database inayotumika sana katika utekelezaji wa programu. Postgres ni mfumo wa usimamizi wa database (RDBMS). Moja ya faida za kutumia Postgres ni msaada wake kwa maswali ya uhusiano (SQL) na yasiyo ya uhusiano (NoSQL).


Njia moja ya kuunganisha database na maombi ya wavuti ni kwa kutumia ORM (Object Relational Mapper). ORM inafanya kazi kama kiwango cha mawasiliano kati ya maombi yako na database. Lengo la mwongozo huu ni kueleza jinsi unaweza kutumia Postgres katika maombi yako ya Express kupitia Sequelize ORM.


Nafasi ya Sequelize ORM inajulikana kama:

TypeScript ya kisasa na Node.js ORM kwa Oracle, Postgres, MySQL, MariaDB, SQLite, na SQL Server, na zaidi.

TypeScript ya kisasa na Node.js ORM kwa Oracle, Postgres, MySQL, MariaDB, SQLite, na SQL Server, na zaidi.


Utakuwa kujenga API rahisi ya usimamizi wa kazi. API itakuwa na uwezo wa kuunda, orodha, update hali ya kukamilika, na kufuta kazi.


Mafunzo haya ni ya kwanza katika mfululizo ujao wa mafundisho yaliyokusudiwa kutumia database ya uhusiano katika Express kwa kutumia Sequelize. Katika mafundisho ya baadaye, utachunguza kupanda database, uhamiaji, na ushirika katika Sequelize.

Mahitaji ya

Ili kuendelea na tutorial hii, utahitaji zifuatazo:

  • Mhariri wa maandishi (kwa mfano, VS Code)
  • Mteja wa API kwa ajili ya kupima pointi za mwisho (kwa mfano, Postman)
  • Node.js imewekwa kwenye kompyuta yako
  • Ujuzi wa msingi wa Express
  • Mfano wa Postgres unaofanya kazi ndani au mbali

Mradi wa Setup

Tutaanza kwa kuanzisha faili na mapendekezo sahihi kwa ajili ya kuunda programu ya Express na kufunga mipango inayohitajika. amri zilizotumika zinafaa tu kwa terminal ya Linux.


  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"
        },
        //…
    }
    

Muundo wa folda ya mradi unapaswa kuonekana kama hii:

Muundo wa Sequelize

Kuunda faili mbili katikautilsUongozi wa:config.jsna yadb.js.

Mabadiliko ya mazingira ya uendeshaji

Kwa hiyo katikaconfig.jsKuanza kucheza katika TopSlotSite , kufuata 3 hatua rahisi kujiandikisha..envfaili kwa kutumiadotenvKuanza kucheza katika TopSlotSite , kufuata 3 hatua rahisi kujiandikisha.PORTna yaDATABASE_URLkubadilika ili waweze kufikia katika sehemu zingine za programu.


yaconfig.jsFaili inapaswa kuwa na maudhui yafuatayo:

require('dotenv').config()

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

module.exports = {
    PORT,
    DATABASE_URL
}

Kuunda Instance ya Sequelize

Kwa hiyo katikadb.jsUnaweza kuunda kazi na uendelee haraka na matumizi ya masanduku. uendelee haraka na matumizi ya masanduku. uendelee haraka na matumizi ya masanduku.DATABASE_URLKuanza kucheza katika TopSlotSite , kufuata 3 hatua rahisi kujiandikisha.connectToDB,ambayo itajaribu kuunganisha na database kwa kuitaauthenticateMwishowe, unaweza kuondoaconnectToDBFUNKCTION na Mfano wa Sequelize.


yautils/db.jsFaili inapaswa kuwa na maudhui yafuatayo:

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
}


Ufafanuzi wa Mfano wa Task

Mfano wa Sequelize ni muonekano wa meza katika database. Unaweza kufafanuaTaskMfano wa kuongezeka kwa SequelizeModelya chuo kikuu na kuombaModel.init(attributes, options)ya kazi.


Kwa hiyo katikamodelsMsimamizi Mjerumani akamwauliza kijanatask.jsFaili na maudhui yafuatayo:

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

yaattributesMfumo huu unafafanua muundo waTaskkatika orodha ya database. yaTaskMfumo huu una sifa tatu:

  • id: Shamba la id ambayo ni kifungo cha msingi kinachoongezeka moja kwa moja kinachotumika kutambua kila rekodi.
  • Jina: Shamba la mstari ambalo linawakilisha jina la kazi.
  • kukamilika: Shamba la kukamilika lina thamani ya Boolean ambayo inaonyesha kama kazi imekamilika.


yaoptionsMstari wa chini: Roho inawakilisha thamani nzuri.TaskMfumo huu una chaguzi zifuatazo:

  • Sequelize: Mfano wa Sequelize uliotengenezwa awali katika utils/db.js.
  • modelName: Jina la meza iliyoundwa katika database.
  • Timestamps: Ikiwa imewekwa kuwa True, huongeza shamba la createdAt na updatedAt moja kwa moja kwenye mfano.
  • imeonyeshwa: Wakati imewekwa kuwa kweli , hufanya uongofu wa mashamba ya kesi ya camel katika kesi ya nyoka katika database.
  • defaultScope: Inaondoa sifa fulani kwa default wakati wa kuuliza.


yaTask.sync()Function synchronizes mifano na database kwa kuunda meza ikiwa meza haipo. Hata hivyo, unapaswa kutambua kwamba synchronization inapaswa kufanyika kwa kutumia uhamiaji.

Kuunda Server ya Express

Hatimaye, unaweka yote kwa pamoja kwa kuunda seva ya Express.index.jsfaili, unaweza kuanzisha middleware inayohitajika, kufafanua njia za API endpoint, na kuendesha seva ya Express.


yastartkazi ni wajibu wa kuanzisha server Express.startFunction kwanza inajaribu kuunganisha na database kwa kuitaconnectToDB()Kama uhusiano ni mafanikio, huanza seva ya Express, ambayo inasikiliza kwenye bandari iliyotajwa.


yaindex.jsFaili ina maudhui yafuatayo:

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

Utafiti wa API Endpoint

Sasa unaweza kuendelea kujaribu vituo vya mwisho vya API:

  1. Kuunda kazi mpya—POST /api/tasks:

Post Request

  1. Orodha ya kazi zote—GET /api/tasks:

Get Request

  1. Toggle hali ya kumaliza—PATCH /api/tasks/:id/toggle-kumaliza:

Patch Request

  1. Kuondoa kazi—DELETE /api/task:

Delete Request

Mwisho wa

Sasa unajua jinsi ya kuunganisha programu ya Express na database ya Postgres kwa kutumia Sequelize. Umeunda API rahisi ya usimamizi wa kazi, na katika mchakato huo, umeunda Sequelize, kuunganisha Sequelize na instance ya Postgres, uliamuaTaskna kuimarisha mfumo wa utunzaji wa API.


Kwa sasa, mantiki ya udhibiti imeandikwa katikaindex.jskatika mafundisho ya baadaye, tutakuwa kurekebisha msingi huu wa msimbo katika muundo zaidi unaoweza kupanua kwa kutumia udhibiti, routers, na uhamiaji wa Sequelize.


Kwa ajili ya kusoma zaidi, unapaswa kwenda kupitiaUfafanuzi wa Takwimukujifunza zaidi kuhusu kutafuta mifano, uthibitisho, ushirika, na zaidi.


Unaweza kupata msimbo kamili wa chanzo kwa mwongozo huu kwenyeya Github.

rasilimali ya

  • Ufafanuzi wa Ufafanuzi (v6)
  • PostgreSQL ni nini? - AWS
  • Kutumia Databases ya Uhusiano na Sequelize - FullStackOpen
  • Taarifa ya Express.js


Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks