العمل مع قواعد البيانات في JavaScript: PostgreSQL و MongoDB عملياً

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة: لماذا يحتاج المطور إلى معرفة SQL و NoSQL؟

تطوير الويب الحديث باستخدام JavaScript (Node.js) نادراً ما يخلو من التفاعل مع قواعد البيانات. الاختيار بين أنظمة إدارة قواعد البيانات العلائقية (PostgreSQL) والموجهة للوثائق (MongoDB) هو أحد المهام المعمارية الرئيسية. في هذه المقالة، سنشرح عملياً كيفية الاتصال بكلا قاعدتي البيانات، وتنفيذ عمليات CRUD، واختيار الأداة المناسبة للمهمة المحددة.

سنستخدم المكتبات الشائعة: pg لـ PostgreSQL و mongoose لـ MongoDB. جميع أمثلة الكود مكتوبة بلغة Node.js.



1. PostgreSQL في Node.js: النهج العلائقي

1.1. الاتصال والإعداد

PostgreSQL هو نظام إدارة قواعد بيانات علائقي قوي يدعم SQL. للعمل معه في Node.js، قم بتثبيت الحزمة pg:

npm install pg

مثال على الاتصال بقاعدة البيانات المحلية mydb:

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

const pool = new Pool({ user: 'postgres', host: 'localhost', database: 'mydb', password: 'secret', port: 5432,});

// اختبار الاتصالpool.query('SELECT NOW()', (err, res) => { if (err) { console.error('خطأ في الاتصال:', err); } else { console.log('تم الاتصال بـ PostgreSQL:', res.rows[0].now); }});


1.2. عمليات CRUD (إنشاء، قراءة، تحديث، حذف)

لنقم بإنشاء جدول users وتنفيذ العمليات الأساسية.

إنشاء الجدول:

const createTable = async () => {  const query = `    CREATE TABLE IF NOT EXISTS users (      id SERIAL PRIMARY KEY,      name VARCHAR(100) NOT NULL,      email VARCHAR(100) UNIQUE NOT NULL,      age INTEGER    );  `;  await pool.query(query);  console.log('تم إنشاء جدول users');};

createTable();

إدراج البيانات (INSERT):

const addUser = async (name, email, age) => {  const query = 'INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING *';  const values = [name, email, age];  const res = await pool.query(query, values);  console.log('تمت إضافة المستخدم:', res.rows[0]);};

addUser('إيفان بيتروف', 'ivan@example.com', 30);

قراءة البيانات (SELECT):

const getUsers = async () => {  const res = await pool.query('SELECT * FROM users');  console.log('جميع المستخدمين:', res.rows);};

getUsers();

تحديث البيانات (UPDATE):

const updateUserAge = async (id, newAge) => {  const query = 'UPDATE users SET age = $1 WHERE id = $2 RETURNING *';  const values = [newAge, id];  const res = await pool.query(query, values);  console.log('تم تحديث المستخدم:', res.rows[0]);};

updateUserAge(1, 31);

حذف البيانات (DELETE):

const deleteUser = async (id) => {  const query = 'DELETE FROM users WHERE id = $1 RETURNING *';  const values = [id];  const res = await pool.query(query, values);  console.log('تم حذف المستخدم:', res.rows[0]);};

deleteUser(1);

لاحظ استخدام الاستعلامات المعلمة ($1, $2). هذا يحمي من هجمات SQL injection.



1.3. متى تختار PostgreSQL؟

  • عند الحاجة إلى هيكل بيانات صارم ودعم التكامل (المفاتيح الخارجية، المعاملات).
  • عند الحاجة إلى استعلامات JOIN معقدة وعمليات تجميع.
  • عند العمل مع البيانات المالية أو الحيوية.
  • عند استخدام المشروع لـ ORM مثل Sequelize أو TypeORM.


2. MongoDB في Node.js: مرونة NoSQL

2.1. الاتصال عبر Mongoose

MongoDB هي قاعدة بيانات موجهة للوثائق، حيث يتم تخزين البيانات بتنسيق يشبه JSON (BSON). للعمل معها، قم بتثبيت mongoose:

npm install mongoose

الاتصال بالخادم المحلي Mo

المدونات

توصيات الكتب