مقدمة في العمل مع قواعد البيانات في JavaScript (Node.js)
\nنادرًا ما تخلو تطوير الويب الحديث من التفاعل مع قواعد البيانات. سواء كان تخزين المستخدمين، أو منشورات المدونة، أو بيانات التحليلات - فإن القدرة على العمل مع قواعد البيانات (قواعد البيانات) هي مهارة أساسية لكل مطور. في هذه المقالة، سننظر في أكثر نوعين من قواعد البيانات شيوعًا: قاعدة البيانات العلائقية PostgreSQL وقاعدة البيانات الموجهة للمستندات MongoDB. سنكتب أمثلة بسيطة بلغة JavaScript (Node.js) ستساعدك على البدء في العمل مع كلا النظامين.
\n\n1. إعداد البيئة وتثبيت التبعيات
\nقبل كتابة الكود، يجب تثبيت برامج التشغيل للتفاعل بين Node.js وقواعد البيانات المختارة. للقيام بذلك، قم بإنشاء مشروع جديد وقم بتثبيت الحزم عبر npm.
\n\nتثبيت برامج التشغيل
\n- \n
- pg - عميل شائع لـ PostgreSQL. \n
- mongoose - ODM (Object Document Mapper) لـ MongoDB، يبسط العمل مع المجموعات. \n
mkdir db-example && cd db-example\nnpm init -y\nnpm install pg mongoose\n\nالآن بيئتك جاهزة للتجارب.
\n\n2. العمل مع PostgreSQL من Node.js
\nPostgreSQL هي قاعدة بيانات علائقية قوية تستخدم SQL للاستعلامات. سنتصل بخادم محلي، وننشئ جدولًا، وننفذ عمليات CRUD الأساسية (إنشاء، قراءة، تحديث، حذف).
\n\nالاتصال بقاعدة البيانات
\nقم بإنشاء ملف postgres.js وأضف الكود التالي للاتصال:
const { Pool } = require('pg');\n\nconst pool = new Pool({\n user: 'your_username',\n host: 'localhost',\n database: 'testdb',\n password: 'your_password',\n port: 5432,\n});\n\nasync function connect() {\n try {\n const client = await pool.connect();\n console.log('تم الاتصال بـ PostgreSQL');\n client.release();\n } catch (err) {\n console.error('خطأ في الاتصال:', err);\n }\n}\n\nconnect();\n\nإنشاء جدول وإدراج البيانات
\nالآن سنضيف دالة لإنشاء جدول users وإدراج السجلات:
async function createTable() {\n const query = `\n CREATE TABLE IF NOT EXISTS users (\n id SERIAL PRIMARY KEY,\n name VARCHAR(100) NOT NULL,\n email VARCHAR(100) UNIQUE NOT NULL\n );\n `;\n await pool.query(query);\n console.log('تم إنشاء جدول users');\n}\n\nasync function insertUser(name, email) {\n const query = 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *';\n const values = [name, email];\n const res = await pool.query(query, values);\n console.log('تمت إضافة مستخدم:', res.rows[0]);\n}\n\n// مثال على الاستخدام\ncreateTable().then(() => insertUser('إيفان', 'ivan@example.com'));\n\nقراءة وتحديث البيانات
\nسنحصل على جميع المستخدمين ونحدث البريد الإلكتروني:
\nasync function getUsers() {\n const res = await pool.query('SELECT * FROM users');\n console.log('جميع المستخدمين:', res.rows);\n}\n\nasync function updateUserEmail(id, newEmail) {\n const query = 'UPDATE users SET email = $1 WHERE id = $2 RETURNING *';\n const res = await pool.query(query, [newEmail, id]);\n console.log('تم تحديث المستخدم:', res.rows[0]);\n}\n\ngetUsers().then(() => updateUserEmail(1, 'ivan_new@example.com'));\n\nPostgreSQL مثالية للمشاريع التي تكون فيها سلامة البيانات والعلاقات المعقدة بين الجداول مهمة.
\n\n3. العمل مع MongoDB من Node.js
\nMongoDB هي قاعدة بيانات NoSQL تخزن البيانات بتنسيق مشابه لـ JSON (BSON). إنها مرنة ولا تتطلب مخططًا صارمًا. للعمل، سنستخدم Mongoose.
\n\nالاتصال بـ MongoDB
\nقم بإنشاء ملف mongo.js:
const mongoose = require('mongoose');\n\nconst connectDB = async