استفاده از node-postgres برای اتصال و کار با پایگاه داده PostgreSQL در Node.js

اکوسیستم Node.js مجموعه‌ای از ابزارها برای ارتباط با پایگاه داده‌ها فراهم می‌کند. یکی از این ابزارها node-postgres است که شامل ماژول‌هایی برای ارتباط Node.js با پایگاه داده PostgreSQL می‌باشد. با استفاده از node-postgres می‌توانید برنامه‌هایی بنویسید که امکان دسترسی به داده‌ها و ذخیره آنها در پایگاه داده PostgreSQL را فراهم می‌آورند.

در این آموزش، شما با استفاده از node-postgres به پایگاه داده PostgreSQL متصل شده و عملیات پرس‌وجو انجام خواهید داد. ابتدا یک کاربر و پایگاه داده در Postgres می‌سازید. سپس برنامه خود را با استفاده از ماژول node-postgres به پایگاه داده متصل می‌کنید. در ادامه داده‌ها را درج، بازیابی و ویرایش خواهید کرد.

پیش‌نیازهای آموزش

  • یک حساب کاربری غیر روت با دسترسی sudo و فایروال فعال در اوبونتو 20.04.
  • نصب Node.js روی اوبونتو.
  • نصب PostgreSQL روی سرور.
  • دانش پایه در نوشتن کوئری‌های PostgreSQL.
  • آشنایی با نوشتن برنامه‌های Node.js.
  • درک مقدماتی از توابع ناهمزمان در جاوااسکریپت.

ایجاد دایرکتوری پروژه و نصب node-postgres

ابتدا دایرکتوری پروژه را بسازید:

mkdir my-project

وارد دایرکتوری شوید:

cd my-project

دایرکتوری را با ایجاد فایل package.json آماده کنید:

npm init -y

سپس ماژول node-postgres را نصب کنید:

npm install pg

اکنون دایرکتوری پروژه شما آماده و node-postgres به عنوان وابستگی نصب شده است. آماده‌اید تا کاربر و پایگاه داده جدیدی در Postgres بسازید.

ایجاد کاربر و پایگاه داده در PostgreSQL

زمانی که PostgreSQL را روی اوبونتو نصب می‌کنید، به صورت پیش‌فرض یک کاربر و پایگاه داده به نام postgres ساخته می‌شود. این کاربر امکان انجام عملیات مدیریتی مثل ایجاد کاربران و پایگاه داده‌های جدید را فراهم می‌کند.

برای ورود به shell پستگرس با کاربر postgres، ابتدا کاربر اوبونتو را به postgres تغییر داده و سپس به پستگرس وصل شوید:

sudo -i -u postgres
psql

حالا می‌توانید کاربر جدیدی با رمز عبور قوی ایجاد کنید (مثلاً fish_user):

CREATE ROLE fish_user WITH LOGIN PASSWORD 'strongpassword';

پایگاه داده جدیدی بسازید و مالکیت آن را به کاربر جدید بسپارید:

CREATE DATABASE fish OWNER fish_user;

برای خروج از محیط پستگرس دستور زیر را بزنید:

\q

برای ورود به postgres shell با کاربر fish_user ابتدا باید همان کاربر را روی اوبونتو ایجاد کنید:

sudo adduser fish_user

ایجاد جدول shark در پایگاه داده fish

وارد محیط پستگرس با کاربر fish_user شوید و به پایگاه داده fish متصل شوید:

sudo -u fish_user psql -d fish

برای مشاهده اتصال فعلی دستور زیر را استفاده کنید:

\conninfo

اکنون جدول shark را با سه ستون ایجاد کنید:

CREATE TABLE shark (
  id SERIAL PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  color VARCHAR(50) NOT NULL
);

برای مشاهده جداول موجود از دستور زیر استفاده کنید:

\dt

خارج شوید:

\q

اتصال Node.js به پایگاه داده با node-postgres

فایل db.js را با ویرایشگر متن دلخواه باز کنید:

nano db.js

کد زیر را در db.js اضافه کنید:

const { Pool } = require('pg');

const pool = new Pool({
  user: 'fish_user',
  host: 'localhost',
  database: 'fish',
  password: 'strongpassword',
  port: 5432,
});

module.exports = pool;

حفظ اطلاعات حساس در محیط تولید بهتر است از طریق فایل‌های .env انجام شود که در گیت ثبت نشوند.

درج داده در جدول shark

فایل insertData.js را ایجاد و باز کنید:

nano insertData.js

کد زیر را قرار دهید:

const pool = require('./db');

async function insertData() {
  try {
    const [name, color] = process.argv.slice(2);
    await pool.query('INSERT INTO shark (name, color) VALUES ($1, $2)', [name, color]);
    console.log(`Inserted ${name} with color ${color} successfully`);
  } catch (err) {
    console.error(err);
  }
}

insertData();

حالا دستور زیر را برای ورود داده اجرا کنید:

node insertData.js sammy blue

پیام موفقیت نمایش داده و رکورد درج می‌شود. مجدداً با مقادیر متفاوت اجرا کنید:

node insertData.js jose teal

بازیابی داده‌ها

فایل retrieveData.js بسازید و کد زیر را وارد کنید:

const pool = require('./db');

async function retrieveData() {
  try {
    const res = await pool.query('SELECT * FROM shark');
    console.log(res.rows);
  } catch (err) {
    console.error(err);
  }
}

retrieveData();

برای مشاهده داده‌ها اجرا کنید:

node retrieveData.js

به‌روزرسانی رکوردها

فایل modifyData.js را بسازید و کد زیر را وارد کنید:

const pool = require('./db');

async function modifyData() {
  try {
    const [id, name] = process.argv.slice(2);
    await pool.query('UPDATE shark SET name = $1 WHERE id = $2', [name, id]);
    console.log(`Updated record id ${id} with new name ${name}`);
  } catch (err) {
    console.error(err);
  }
}

modifyData();

برای تغییر نام رکورد با id=2 دستور زیر را اجرا کنید:

node modifyData.js 2 san

و برای اطمینان از تغییر، داده‌ها را دوباره بازیابی کنید:

node retrieveData.js

جمع‌بندی

در این آموزش، با استفاده از node-postgres یک برنامه Node.js به پایگاه داده PostgreSQL متصل شده و عملیات درج، بازیابی و ویرایش داده‌ را انجام دادید. ابتدا کاربر و پایگاه داده جدید را ایجاد کردید، سپس جدول ساختید و در نهایت با کدهایی ساده داده‌ها را مدیریت نمودید.

برای اطلاعات بیشتر به مستندات node-postgres در وب‌سایت رسمی مراجعه کنید.

از همراهی شما با جامعه آموزش پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *