العمل مع قواعد البيانات في JavaScript: PostgreSQL وMongoDB على Node.js

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

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

ابدأ الدورة

العمل مع قواعد البيانات في JavaScript: PostgreSQL و MongoDB على Node.js



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



ستكون المادة مفيدة لكل من المطورين المبتدئين الذين يتعلمون للتو الباك إند باستخدام JavaScript، والمتخصصين ذوي الخبرة الذين يرغبون في تنظيم معرفتهم. جميع أمثلة الكود مكتوبة لبيئة تشغيل Node.js.



إعداد البيئة وتثبيت المشغلات (Drivers)



قبل البدء في العمل، من الضروري تثبيت الحزم المناسبة عبر npm. بالنسبة لـ PostgreSQL، يتم استخدام المشغل pg، وبالنسبة لـ MongoDB — المشغل الرسمي mongodb أو مكتبة ODM الشهيرة mongoose.



أنشئ مشروعًا جديدًا وقم بتثبيت التبعيات:



mkdir db-example && cd db-examplenpm init -ynpm install pg mongoose


الآن بيئتك جاهزة للتجارب. تأكد من تشغيل خوادم قواعد البيانات المناسبة على جهازك (PostgreSQL على المنفذ 5432 و MongoDB على المنفذ 27017).



1. العمل مع PostgreSQL عبر المشغل pg



PostgreSQL هو نظام إدارة قواعد بيانات علائقية قوي يدعم SQL. للتفاعل معه في Node.js، يتم استخدام الحزمة pg، التي توفر كلاً من مجموعة الاتصالات (connection pool) والعميل المنفصل.



لننظر إلى مثال أساسي للاتصال وتنفيذ الاستعلامات:



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

// إعداد مجموعة الاتصالاتconst pool = new Pool({ user: 'postgres', host: 'localhost', database: 'testdb', password: 'your_password', port: 5432,});

// دالة غير متزامنة للعمل مع قاعدة البياناتasync function runPostgresExample() { try { // إنشاء جدول await pool.query(` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(100) UNIQUE NOT NULL, age INTEGER ); `);

// INSERT — إضافة بيانات const insertResult = await pool.query( 'INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING *', ['إيفان بيتروف', 'ivan@example.com', 30] ); console.log('تمت إضافة المستخدم:', insertResult.rows[0]);

// SELECT — قراءة البيانات const selectResult = await pool.query('SELECT * FROM users'); console.log('جميع المستخدمين:', selectResult.rows);

// UPDATE — تحديث البيانات await pool.query( 'UPDATE users SET age = $1 WHERE name = $2', [31, 'إيفان بيتروف'] ); console.log('تم تحديث العمر');

// DELETE — حذف البيانات await pool.query('DELETE FROM users WHERE name = $1', ['إيفان بيتروف']); console.log('تم حذف المستخدم'); } catch (err) { console.error('خطأ PostgreSQL:', err.message); } finally { await pool.end(); }}

runPostgresExample();


لاحظ استخدام الاستعلامات ذات المعلمات مع العناصر النائبة $1، $2، إلخ. هذا يحمي من هجمات SQL Injection ويعتبر أفضل ممارسة. يُوصى باستخدام مجموعة الاتصالات لبيئة الإنتاج، لأنها تدير الاتصالات بكفاءة.



2. العمل مع MongoDB عبر Mongoose



MongoDB هي قاعدة بيانات NoSQL، تخزن البيانات بتنسيق مشابه لـ JSON (BSON). يوفر Mongoose تجريدًا مناسبًا مع مخططات (schemas)، والتحقق من الصحة (validation)، وطرق للعمل مع المجموعات (collections).



مثال على الاتصال وعمليات CRUD باستخدام Mongoose:



const mongoose = require('mongoose');

// تعريف مخطط المستخدمconst

المدونات

توصيات الكتب