برنامه نویسیدیتابیس

استفاده از 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 در وب‌سایت رسمی مراجعه کنید.

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

نوشته های مشابه

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

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

دکمه بازگشت به بالا