آموزش استفاده از PostgreSQL با Node.js در اوبونتو 20.04

Avatar
نویسنده: دریا آزادخواه
چهارشنبه 19 مرداد 1401
مطالعه: ۱۹ دقیقه ۰ نظر ۹۵۷ بازدید

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

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

خرید سرور لینوکس به همراه سیستم اوبونتو از پارس پک

شما می‌توانید از این مقاله برای مدیریت سرورهای لینوکس خود استفاده کنید و اگر قصد خرید هر یک از سرویس‌های لینوکسی پارس پک را دارید، می‌توانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما می‌توانید برای اطلاع از تعرفه‌ها و هزینه‌ها به لینک‌های زیر مراجعه کنید.

پیش‌نیازها

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

مراحل استفاده از PostgreSQL با Node.js در اوبونتو 20.04

برای استفاده از PostgreSQL با Node.js در اوبونتو 20.04، باید مراحل زیر را به‌ترتیب دنبال کنید.

nodejs postgres

چگونه از PostgreSQL با Node.js در اوبونتو استفاده کنیم؟

مرحله اول. راه‌اندازی Project Directory (فهرست پروژه)

در این مرحله، دایرکتوری node application را ایجاد و node-postgres را با استفاده از برنامه npm نصب کنید. در این دایرکتوری، پایگاه‌داده PostgreSQL را ایجاد و با فایل‌های پیکربندی‌شده تعامل خواهید کرد. برای راه‌اندازی Project Directory، باید به‌صورت زیر عمل کنید.

برای آشنایی کامل با هر کدام از سیستم‌های مدیریت دیتابیس نسبی و مقایسه آن‌ها با یکدیگر مقاله زیر را بخوانید.

مقایسه SQLite و MySQL و PostgreSQL

با استفاده از کامند mkdir، یک Project Directory ایجاد کنید:

mkdir node_pg_app

سپس، با کمک دستور cd به دایرکتوری بروید:

cd node_pg_app

حالا دایرکتوری همراه با فایل package.json را با استفاده از دستور npm init راه‌اندازی کنید:

npm init -y

فلاگ y- به‌صورت پیش‌فرض فایل package.json ایجاد می‌کند. بعدازآن، ماژول‌های node-postgres را با کامند npm نصب کنید:

npm install pg

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

مرحله دوم. ایجاد یک کاربر پایگاه‌داده و یک پایگاه‌داده در PostgreSQL

در این مرحله، باید یک کاربر پایگاه‌داده و یک پایگاه‌داده برای برنامه‌تان ایجاد کنید. توجه کنید که وقتی Postgres را برای اولین‌بار روی اوبونتو نصب می‌کنید، یک کاربر Postgres ساخته می‌شود که به‌دنبال آن یک کاربر پایگاه‌داده به نام Postgres و یک پایگاه‌داده Postgres در سیستمتان ایجاد می‌کند. کاربر Postgres این امکان را برایتان فراهم می‌کند تا فضای PostgreSQL را باز کنید تا در آن، کارهای مدیریتی مانند ایجاد کاربر و پایگاه‌داده را انجام دهید.

PostgreSQL برای اتصال از طرح احراز هویت ident استفاده می‌کند که به کاربر در اوبونتو اجازه می‌دهد تا زمانی که نام کاربری با نام کاربری معتبر Postgres مطابقت داشته باشد، بدون احزار هویت به Postgres shell وارد شود. ازآن‌جا‌که در طول فرایند نصب، کاربری به نام Postgres در اوبونتو ایجاد شده است که با کاربر Postgres در PostgreSQL مطابقت دارد، می‌توانید به پوسته Postgres وارد شوید.

سه راه مختلف را برای نصب Node.js روی سرور اوبونتو 20.04 وجود دارد که می‌توانید در مقاله زیر بخوانید.

نحوه نصب Node.js در اوبونتو 20.04

برای ورود، کاربر اوبونتو را با استفاده از گزینه sudo به Postgres تغییر دهید. سپس با استفاده از psql command، به پوسته Postgres وارد شوید:

sudo -u postgres psql

آرگومان‌های کامند نشان‌دهنده نکات زیر است:

  • U-: فلاگی که کاربر را به کاربر مدنظر در اوبونتو سوئیچ می‌کند. عبور کاربر Postgres به‌عنوان آرگومان، کاربر در اوبونتو را به Postgres تغییر می‌دهد.
  • psql: برنامه ترمینال تعاملی Postgres است که در آن، می‌توانید دستورهای SQL را برای ایجاد پایگاه‌های داده، رول‌ها، جداول و… وارد کنید.

پس از لاگین به Postgres shell، ترمینال شما به‌شکل زیر خواهد بود:

postgres=#

پوسته Postgres نام پایگاه‌داده‌ای است که با آن تعامل خواهید داشت و # نشان می‌دهد که به‌عنوان اَبَرکاربر وارد شده‌اید. اکنون برای برنامه Node، یک کاربر و پایگاه‌داده جداگانه‌ای ایجاد کنید که برنامه از آن برای اتصال به Postgres استفاده می‌کند.

برای انجام این کار، رول جدیدی با رمزعبور قوی ایجاد کنید:

CREATE USER fish_user WITH PASSWORD 'password';

یک رول در Postgres بسته به نیاز شما می‌تواند به‌عنوان یک کاربر یا گروه در نظر گرفته شود. در این آموزش، رول در Postgres به‌عنوان یک کاربر در نظر گرفته شده است.

در مرحله بعد، یک پایگاه‌داده ایجاد کنید و مالکیت را به کاربری اختصاص دهید که ایجاد کرده‌اید:

CREATE DATABASE fish OWNER fish_user;

تعیین fish_user به‌عنوان پایگاه‌داده امتیازهایی مانند ایجاد و دراپ و قرار‌دادن داده‌ها در جدول پایگاه‌داده fish را فراهم می‌کند.

حال پس از ایجاد کاربر و پایگاه‌داده، از پوسته تعاملی Postgres خارج شوید:

Postgres=# \q

برای ورود به پوسته Postgres به‌عنوان fish_user، باید در اوبونتو کاربری با نامی شبیه به کاربر Postgres ایجاد کنید.

با استفاده از دستور adduser، کاربر ایجاد کنید:

sudo adduser fish_user

اکنون یک کاربر در اوبونتو و یک کاربر در PostgreSQL و یک پایگاه‌داده برای برنامه Node خود ایجاد کرده‌اید. در مرحله بعد، با استفاده از fish_user وارد پوسته تعاملی PostgreSQL شوید و یک جدول ایجاد کنید.

دستورات postgresql

آموزش ایجاد پایگاه‌داده PostgreSQL

مرحله سوم. باز‌کردن پوسته PostgreSQL با ایجاد یک رول و یک جدول

در این بخش، پوسته Postgres را باز کنید. پس از لاگین به پوسته، یک جدول برای برنامه Node.js ایجاد کنید.

برای باز‌کردن پوسته به‌عنوان fish_user، دستور زیر را وارد کنید:

sudo -u fish_user psql -d fish

sudo -u fish_user کاربر اوبونتو را به fish_user تغییر می‌دهد و سپس، کامند psql را برای آن کاربر اجرا می‌کند. فلاگ d- پایگاه‌داده‌ای را مشخص می‌کند که می‌خواهید به آن متصل شوید که در این مورد fish است. اگر پایگاه‌داده را مشخص نکنید، psql سعی می‌کند به‌طور پیش‌فرض به پایگاه‌داده fish_user متصل شود که معمولاً آن را پیدا نمی‌کند و خطا می‌دهد.

هنگامی که وارد پوسته psql شدید، درخواست پوسته شما به‌شکل زیر خواهد بود:

fish=>

این علامت fish نشان می‌دهد که اکنون به پایگاه‌داده fish متصل هستید.

حالا می‌توانید با استفاده از دستور conninfo/ اتصال را تأیید کنید:

\conninfo

درنهایت، اطلاعات خروجی‌ای مشابه زیر دریافت خواهید کرد:

You are connected to database "fish" as user "fish_user" via socket in "/var/run/postgresql" at port "5432".

این خروجی تأیید می‌کند که واقعاً به‌عنوان fish_user وارد شده‌اید و به پایگاه‌داده fish متصل هستید. در مرحله بعد، می‌توانید جدولی ایجاد کنید تا حاوی داده‌هایی باشد که برنامه‌تان را مشخص می‌کند.

جدولی که ایجاد می‌کنید، نام Shark و رنگ آن‌ها را مشخص می‌کند. این جدول هنگامی که با داده‌های شما پر می‌شود، به‌شکل زیر درخواهد آمد:

  id   Name    color
  1   Sammy blue
  2     jose teal

اکنون با استفاده از کامند SQL create table، یک جدول ایجاد کنید:

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

دستور CREATE TABLE Shark جدولی با ۳ ستون ایجاد می‌کند:

  • id: یک فیلد Auto-Incrementing و کلید Primary برای جدول ایجاد می‌کند. هربار که یک ردیف را وارد می‌کنید، Postgres مقدار id را براساس آن افزایش می‌دهد و پر می‌کند.
  • name and color: فیلدهایی هستند که می‌توانند ۵۰ کاراکتر را ذخیره کنند. NOT NULL محدودیتی است که از خالی‌بودن فیلدها جلوگیری می‌کند.

حال بررسی کنید که آیا جدول با مشخصات مدنظرتان ایجاد شده است یا خیر. برای این کار، از دستور زیر استفاده کنید:

\dt

کامند dt\ همه جداول پایگاه‌داده را فهرست می‌کند.

هنگامی که دستور  dt\ را اجرا می‌کنید، خروجی زیر را مشاهده خواهید کرد:

         List of relations
 Schema | Name  | Type  |   Owner
--------+-------+-------+-----------
 public | shark | table | fish_user
(1 row)

این خروجی تأیید می‌کند که fish_user سازنده جدول Shark است.

چطور اولین برنامه خود را در Node.js بنویسیم و اجرا کنیم؟ در مقاله زیر بخوانید.

نوشتن و اجرا کردن برنامه در Node.js

حالا از پوسته Postgres خارج شوید:

\q

اجرای این کامند شما را به Project Directory برمی‌گرداند. با ایجاد جدول، از ماژول node-postgres برای اتصال به Postgres استفاده کنید.

مرحله چهارم. اتصال به پایگاه‌داده Postgres

در این مرحله، باید از node-postgres برای اتصال برنامه Node.js به پایگاه‌داده PostgreSQL استفاده کنید. برای انجام این کار، باید از node-postgres به‌منظور ایجاد Connection Pool بهره ببرید. Connection Pool به‌عنوان حافظه‌ای پنهان برای اتصالات پایگاه‌داده عمل می‌کند و به برنامه‌تان اجازه می‌دهد تا از اتصالات برای همه درخواست‌های پایگاه‌داده مجدداً استفاده کنید. همچنین، این قابلیت می‌تواند سرعت برنامه شما را افزایش دهد و منابع سرورتان را ذخیره کند.

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

nano db.js

در فایل db.js خود، به ماژول node-postgres نیاز خواهید داشت. از Destructuring Assignment برای استخراج کلاس Pool از node-postgres استفاده کنید:

const { Pool } = require('pg')

در مرحله بعد، یک نمونه Pool برای Connection Pool ایجاد کنید:

const { Pool} = require('pg')

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

هنگامی که نمونه Pool را ایجاد می‌کنید، آبجکت پیکربندی‌شده‌ای به‌عنوان آرگومان ارسال می‌شود. این آبجکت حاوی جزئیاتی است که node-postgres برای برقراری ارتباط با Postgres استفاده می‌کند. آبجکت یادشده شامل ویژگی‌های زیر است:

  • user: کاربری که در Postgres ایجاد کرده‌اید.
  • database: نام پایگاه‌داده‌ای که در Postgres ایجاد کرده‌اید.
  • password: رمزعبوری که برای کاربر fish_user تعیین کرده‌اید.
  • port: پورتی است که Postgres از آن پیروی می‌کند. به‌صورت پیش‌فرض پورت 5432 انتخاب شده است.
  • host: سرور Postgres است که می‌خواهید node-postgres به آن متصل شود. با انتقال به هاست لوکال، node-postgres به سرور Postgres متصل می‌شود. اگر سرور Postgres روی قسمت دیگری قرار داشت، هاست شما به این شکل خواهد بود:    host: server_ip_address.

نکته: هنگام ایجاد Pool، توصیه می‌کنیم مقادیر پیکربندی‌شده را در فایل دیگری مانند فایل env. نگه دارید. سپس، در‌صورت استفاده از Git این فایل را به فایل gitignore. اضافه کنید تا از ردیابی آن با کنترل نسخه جلوگیری شود. مزیت این روش آن است که اطلاعات حساس مانند رمزعبور کاربر و پایگاه‌داده شما را از حملات هکری پنهان می‌کند.

اکنون اتصال پایگاه‌داده برقرار می‌شود و آبجکت Pool در متغیر pool ذخیره می‌شود. برای استفاده از آن در هرجایی از برنامه‌تان، باید آن را خارج کنید. در فایل db.js، یک نمونه از آبجکت Pool را بخواهید و آن را تعریف کنید. سپس، خواص و مقادیر آن را تنظیم کنید:

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

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

module.exports = { pool };

درنهایت، فایل را ذخیره کنید و با فشاردادن کلیدهای CTRL+X از nano خارج شوید. برای ذخیره تغییرات، حرف y را وارد کنید و نام فایلتان را با فشاردادن کلید Enter یا در سیستم‌عامل Mac با فشاردادن کلید Return تأیید کنید.

اکنون که برنامه خود را به Postgres متصل کرده‌اید، از این اتصال می‌توانید برای درج داده در Postgres استفاده کنید.

مرحله پنجم. درج داده‌ها در پایگاه‌داده Postgres

در این مرحله، برنامه‌ای ایجاد می‌کنید که با استفاده از Connection Pool در فایل db.js ایجاد شده است و داده‌ها را به پایگاه‌داده PostgreSQL اضافه می‌کند. برای اطمینان از اینکه برنامه در هربار اجرا داده‌های مختلفی را وارد می‌کند، به آن توابعی دهید که آرگومان‌های کامند لاین را بپذیرد.

حالا فایل insertData.js را در برنامه‌تان ایجاد و سپس باز کنید:

nano insertData.js

در فایل insertData.js برای ایجاد فرایند اسکریپت، آرگومان‌های Command-Line زیر را اضافه کنید:

const { pool } = require("./db");

async function insertData() {
  const [name, color] = process.argv.slice(2);
  console.log(name, color);
}

insertData();

برای اینکه بتوانید به فایل db.js دسترسی پیدا کنید، ابتدا به Pool نیاز دارید. این به برنامه شما اجازه می‌دهد با اتصال به پایگاه‌داده در آن جست‌وجو کنید. سپس، تابع ()insertData را به‌عنوان تابعی ناهمگام با کلمه کلیدی async مشخص کنید. این کار به شما امکان می‌دهد از کلمه کلیدی await برای ناهمگام‌کردن درخواست‌های پایگاه‌داده استفاده کنید.

در تابع ()insertData، از ماژول process برای دسترسی به command-line arguments استفاده کنید. متد Node.js process.argv همه آرگومان‌های یک آرایه شامل node و insertData.js را برمی‌گرداند.

برای مثال، هنگامی که اسکریپت را در ترمینالی با node insertData.js sammy blue اجرا می‌کنید، متد process.argv یک آرایه را برمی‌گرداند: [‘node’, ‘insertData.js’, ‘sammy’, ‘blue’] (این آرایه‌ها برای اختصار نوشته شده است).

برای ردشدن از دو عنصر اول، یعنی node و insertData.js، متد ()slice جاوااسکریپت را به متد process.argv اضافه کنید. این روش عناصر را از شاخص 2 به‌بعد بازمی‌گرداند. سپس، این آرگومان‌ها به متغیرهای name and color تقسیم می‌شوند.

فایل خود را ذخیره کنید و با فشاردادن کلیدهای CTRL+X از nano خارج شوید. درادامه، آن را با استفاده از node اجرا و آرگومان‌های sammy و blue را به آن ارسال کنید:

node insertData.js sammy blue

پس از اجرای دستور، خروجی زیر را مشاهده خواهید کرد:

Output
sammy blue

حالا این تابع می‌تواند ازطریق آرگومان‌های کامند لاین به name and color Shark دسترسی داشته باشد. در مرحله بعد، می‌توانید تابع ()insertData را برای درج داده‌ها در جدول Shark تغییر دهید.

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

const { pool } = require("./db");

async function insertData() {
  const [name, color] = process.argv.slice(2);
  const res = await pool.query(
      "INSERT INTO shark (name, color) VALUES ($1, $2)",
      [name, color]
    );
  console.log(`Added a shark with the name ${name}`);
}

insertData();

اکنون تابع ()insertData می‌تواند name and color را مشخص کند. سپس، متد pool.query از node-postgres است که عبارت SQL INSERT INTO Shark (شامل نام، رنگ و…) را به‌عنوان اولین آرگومان می‌گیرد. SQL یک رکورد را در جدول Shark درج و برای انجام این کار، از کوئری parameterized استفاده می‌کند. $1 و $2 مربوط به نام و متغیرهای رنگ در آرایه ارائه‌شده در متد ()pool.query و به‌عنوان آرگومان دوم است [name, color].

هنگامی که Postgres دستور را اجرا می‌کند، متغیرها از برنامه‌تان در‌برابر ورود SQL محافظت می‌کنند. پس از اجرای کوئری، تابع با استفاده از ()console.log پیامی موفقیت‌آمیز ثبت می‌کند.

قبل از اجرای اسکریپت، کد را درون تابع ()insertData در یک سد try…catch نگه دارید تا در زمان اجرا، خطاها را مدیریت کنید:

const { pool } = require("./db");

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

insertData()

هنگامی که تابع اجرا می‌شود، کد داخل سد try اجرا خواهد شد. درصورت موفقیت‌آمیزبودن، تابع سد catch را رد می‌کند و خارج می‌شود. بااین‌حال، اگر خطایی در داخل try فعال شود، سد catch اجرا می‌شود و خطا را در کنسول ثبت می‌کند.

حالا برنامه شما می‌تواند آرگومان‌های کامند لاین را بگیرد و از آن‌ها برای درج رکورد در جدول Shark استفاده کند. درادامه، داده را ذخیره کنید و از ویرایشگر متن خود خارج شوید. پس‌ازآن، فایل insertData.js را با sammy و blue به‌عنوان آرگومان‌های کامند لاین اجرا کنید:

node insertData.js sammy blue

اکنون، خروجی زیر را دریافت خواهید کرد:

Output
Added a shark with the name sammy

سپس، فایل را دوباره با jose و teal به‌عنوان آرگومان‌های Command-Line اجرا کنید:

node insertData.js jose teal

خروجی به‌دست‌آمده مشابه شکل زیر خواهد بود:

Output
Added a shark with the name jose

این نتیجه تأیید می‌کند که شما رکورد دیگری را با نام jose و رنگ teal در جدول Shark وارد کرده‌اید و اکنون دو رکورد در جدول Shark دارید.

مرحله ششم. بازیابی داده‌ها از پایگاه‌داده Postgres

در این مرحله، تمام رکوردهای جدول Shark را با استفاده از node-postgres بازیابی و آن‌ها را به کنسول یا پوسته وارد کنید. برای این کار، فایل retrieveData.js را در ویرایشگر متن دلخواهتان ایجاد و باز کنید:

nano retrieveData.js

در retrieveData.js، برای بازیابی داده‌ها از پایگاه‌داده از کد زیر استفاده کنید:

const { pool } = require("./db");

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

retrieveData()

تابع ()retrieveData تمام ردیف‌های جدول Shark را می‌خواند و آن‌ها را در کنسول ثبت می‌کند. با تابع try، متد ()pool.query را از node-postgres با استفاده از دستور SQL به‌عنوان آرگومان فراخوانی کنید. عبارت SQL SELECT * FROM Shark تمام رکوردهای جدول Shark را بازیابی می‌کند. هنگامی که داده‌ها بازیابی شدند، عبارت ()console.log ردیف‌ها را ثبت می‌کند.

اگر خطایی ایجاد شود، برنامه اجراشده به سد catch پرش و خطا را ثبت می‌کند. در خط آخر، تابع ()retrieveData را فراخوانی کنید.

اکنون، ویرایشگر خود را ذخیره کنید و ببندید. سپس، فایل retrieveData.js را اجرا کنید:

node retrieveData.js

در‌ادامه، خروجی‌ای مشابه خروجی زیر را مشاهده خواهید کرد:

Output
[
  { id: 1, name: 'sammy', color: 'blue' },
  { id: 2, name: 'jose', color: 'teal' }
]

node-postgres ردیف‌های جدول را در آبجکت JSONمانند برمی‌گرداند. این اشیاء در یک آرایه ذخیره می‌شوند. اکنون، می‌توانید داده‌ها را از پایگاه‌داده بازیابی کنید و داده‌های جدول را با استفاده از node-postgres تغییر دهید.

مرحله هفتم. تغییر داده‌ها در پایگاه‌داده Postgres

در این مرحله، از node-postgres برای تغییر داده‌ها در پایگاه‌داده Postgres استفاده کنید. این حالت به شما امکان می‌دهد داده‌ها را در هریک از رکوردهای جدول Shark تغییر دهید. شما اسکریپتی ایجاد خواهید کرد که از دو آرگومان کامند لاین یعنی، id و name، استفاده می‌کند. مقدار id را برای انتخاب رکورد مدنظر در جدول به‌کار می‌گیرید و آرگومان name نیز مقدار جدیدی برای رکوردی است که می‌خواهید نامش را تغییر دهید.

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

nano modifyData.js

در فایل modifyData.js خود، کد زیر را برای تغییر رکورد در جدول Shark اضافه کنید:

const { pool } = require("./db");

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

modifyData();

ابتدا، به آبجکت pool از فایل db.js در فایل modifyData.js خود نیاز دارید. در مرحله بعد، تابع ناهمگام ()modifyData را برای تغییر رکورد در Postgres تعریف کنید. در داخل تابع، دو متغیر id و name را از آرگومان‌های کامند لاین با استفاده از مأمور تخریب ساختار تعریف می‌کنید.

با سد try، متد pool.query را از node-postgres با ارسال عبارت SQL به‌عنوان اولین آرگومان فراخوانی کنید. در دستور UPDATE SQL، با درج عبارت WHERE رکوردی را انتخاب کنید که با مقدار شناسه مطابقت دارد.

پس از انتخاب، SET name = $1 مقدار در قسمت نام را به مقدار جدیدی تغییر دهد. سپس، console.log پیامی را ثبت می‌کند که بعد از تغییر نام رکورد اجرا می‌شود. درنهایت، تابع ()modifyData را در آخرین خط فراخوانی کنید.

با استفاده از CTRL+X، فایل را ذخیره کنید و از آن خارج شوید. فایل modifyData.js را با درج عدد 2 و san به‌عنوان آرگومان اجرا کنید:

node modifyData.js 2 san

به‌دنبال کامند قبلی، خروجی زیر را دریافت خواهید کرد:

Output
Updated the shark name to san

برای تأیید اینکه نام رکورد از jose به san تغییر کرده است، فایل retrieveData.js را اجرا کنید:

node retrieveData.js

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

Output
output
[
  { id: 1, name: 'sammy', color: 'blue' },
  { id: 2, name: 'san', color: 'teal' }
]

حالا باید ببینید که رکورد با شناسه 2 نام جدید san به‌جای jose داشته باشد. با انجام این کار، در پایگاه‌داده رکوردی را با استفاده از node-postgres با موفقیت به‌روز کرده‌اید.

کار با postgresql

چگونه داده‌ها را در پایگاه‌داده Postgres تغییر دهیم؟

جمع‌بندی

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

امیدواریم که این آموزش برایتان مفید بوده باشد. شما می‌توانید سؤال‌ها و ابهام‌های خود درباره این آموزش را با کارشناسان پارس پک به‌اشتراک بگذارید و راهنمایی‌های لازم را دریافت کنید.

سؤالات متداول

۱. چگونه با Node.js به PostgreSQL متصل شویم؟

نحوه اتصال PostgreSQL به درایور Node.js به‌صورت زیر است:

  • پسوند PostgreSQL را برای Node.js و نیز npm را نصب کنید.
  • اطلاعات PostgreSQL را در صفحه جزئیات آن وارد کنید؛ ازجمله:
  1. نام کاربری
  2. کلمه عبور
  3. نام هاست
  4. پورت (پیش‌فرض 5432)
  5. گواهی SSL (اگر استقرار SSL داشته باشد)

۲. چگونه می‌توانیم به پایگاه داده PostgreSQL در اوبونتو دسترسی پیدا کنیم؟

با استفاده از نام کاربری postgres و رمزعبور ارائه‌شده، به پایگاه داده در localhost:5432 متصل شوید. اکنون روی PostgreSQL 9.4 در زیر «گروه‌های سرور» دو بار کلیک کنید. حالا pgAdmin از شما رمزعبور می‌خواهد. شما باید رمزعبور کاربر postgres را برای احراز هویت وارد کنید.

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

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


ارسال دیدگاه در وبلاگ پارس‌پک را مطالعه کرده و آن‌ها را می‌پذیرم.

با خدمات ابری پارس پک آشنا شوید

اولین ارائه‌دهنده خدمات رایانش ابری در ایران هستیم