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.
-
Create the project directory:
mkdir tasks-manager-api
-
Navigate to the project directory:
cd tasks-manager-api
-
Initialize the NPM package by running the following command to create a
package.json
file with default settings:npm init -y
-
Install Express and other core dependencies:
npm install express express-async-errors dotenv && npm install nodemon --save-dev
-
Install Postgres driver for Node.js:
npm install pg
-
Install Sequelize:
npm install sequelize
-
In the root directory, create the
models
andutils
folders:mkdir models utils
-
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>
-
In the root directory, create the
index.js
file, which is the application entry point:touch index.js
-
Set up the command to run the local development server by editing the
scripts
object inpackage.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ıutils
Direktorluq :config.js
vədb.js.
Çevrimiçi dəyişikliklər
Şirkətdəconfig.js
Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə.env
Filtrə istifadə etməkdotenv
Eksport.az xəbər verir ki, buPORT
vəDATABASE_URL
Ümumilikdə, bu variantlar aplikasiyanın digər bölmələrində istifadə edilə bilər.
İŞİDconfig.js
Dosyaları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_URL
Bir neçə ildir ki, bu funksiyaları yaradıb.connectToDB,
İnternet bazası ilə bağlı testlər aparılacaqauthenticate
Növbəti məqalə: EksportconnectToDB
funksiya və sequelize instance.
İŞİDutils/db.js
Dosyaları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.Task
Sürücüləri genişləndirən modelModel
Sınaq və çağırışModel.init(attributes, options)
funksiyaları
Şirkətdəmodels
Direktorun yaradılmasıtask.js
Sonraki İç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
İŞİDattributes
Bu parametrlərin strukturuTask
Database.az xəbər verir ki, buTask
Model üç 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.Task
Modelin 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 etdirirstart
Bu 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.js
Dosyaları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:
- Yeni bir iş yaratmaq — POST /api/tasks:
- Bütün işlərin listəsi — GET /api/tasks:
- Pərəstiş statusu Toggle — PATCH /api/tasks/:id/toggle-completed
- Əsas səhifə / TASK / TASK:
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.Task
Məş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ı