العمل مع قواعد البيانات في TypeScript: PostgreSQL و MongoDB للمبتدئين

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

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

ابدأ الدورة

العمل مع قواعد البيانات في TypeScript: PostgreSQL و MongoDB للمبتدئين

\n\n

نادرًا ما يخلو تطوير الويب الحديث من قواعد البيانات. يوفر TypeScript، باعتباره إضافة صارمة التوصيف فوق JavaScript، إمكانيات ممتازة للعمل الآمن والمتوقع مع البيانات. في هذه المقالة، سنشرح كيفية توصيل واستخدام قاعدتي بيانات شائعتين - PostgreSQL العلائقية و MongoDB الموجهة للمستندات - في مشاريع TypeScript. المادة موجهة للمطورين المبتدئين الذين لديهم معرفة أساسية بـ TypeScript و Node.js.

\n\n

1. إعداد البيئة وتثبيت التبعيات

\n\n

قبل البدء، تأكد من تثبيت Node.js و npm. للعمل مع TypeScript، قم بتثبيت المترجم والأنواع لـ Node.js:

\n\n
npm install -g typescript\nnpm init -y\nnpm install typescript @types/node --save-dev\nnpx tsc --init
\n\n

للعمل مع قواعد البيانات، سنستخدم المكتبات الشائعة:

\n
    \n
  • TypeORM — ORM لـ PostgreSQL (وقواعد بيانات SQL الأخرى)
  • \n
  • Mongoose — ODM لـ MongoDB
  • \n
\n\n

قم بتثبيتها في مشروعك:

\n\n
npm install typeorm reflect-metadata pg\nnpm install mongoose
\n\n

لا تنس إضافة "experimentalDecorators": true و "emitDecoratorMetadata": true في ملف tsconfig.json.

\n\n

2. العمل مع PostgreSQL عبر TypeORM

\n\n

PostgreSQL هو نظام إدارة قواعد بيانات علائقية قوي. يتيح لك TypeORM العمل معه من خلال الكيانات (entities) والمستودعات (repositories)، مما يجعل الكود نظيفًا ومكتوبًا بشكل محدد.

\n\n

2.1. إنشاء الاتصال والكيان

\n\n

لنقم بإنشاء ملف data-source.ts لإعداد الاتصال:

\n\n
import { DataSource } from "typeorm";\n\nexport const AppDataSource = new DataSource({\n    type: "postgres",\n    host: "localhost",\n    port: 5432,\n    username: "your_user",\n    password: "your_password",\n    database: "your_db",\n    synchronize: true,\n    logging: false,\n    entities: ["src/entity/**/*.ts"],\n});
\n\n

الآن لنقم بإنشاء كيان User في ملف src/entity/User.ts:

\n\n
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";\n\n@Entity()\nexport class User {\n    @PrimaryGeneratedColumn()\n    id: number;\n\n    @Column()\n    name: string;\n\n    @Column({ unique: true })\n    email: string;\n\n    @Column()\n    age: number;\n}
\n\n

2.2. عمليات CRUD مع TypeORM

\n\n

مثال على إنشاء وجلب المستخدمين:

\n\n
import { AppDataSource } from "./data-source";\nimport { User } from "./entity/User";\n\nasync function main() {\n    await AppDataSource.initialize();\n    const userRepository = AppDataSource.getRepository(User);\n\n    // إنشاء\n    const newUser = userRepository.create({\n        name: "إيفان",\n        email: "ivan@example.com",\n        age: 25\n    });\n    await userRepository.save(newUser);\n    console.log("تم إنشاء المستخدم:", newUser);\n\n    // قراءة الكل\n    const users = await userRepository.find();\n    console.log("جميع المستخدمين:", users);\n\n    // تحديث\n    await userRepository.update({ id: 1 }, { age: 26 });\n\n    // حذف\n    await userRepository.delete({ id: 1 });\n}\n\nmain().catch(console.error);
\n\n

يقوم TypeORM تلقائيًا بتوليد استعلامات SQL، وتحمي توصيفات TypeScript من الأخطاء في مرحلة التجميع.

\n\n

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

\n\n

MongoDB هي قاعدة بيانات NoSQL تخزن البيانات بتنسيق مشابه لـ JSON. يوفر Mongoose مخططًا والتحقق من الصحة لـ TypeScript.

\n\n

3.1. الاتصال وتحديد المخطط

\n\n

لنقم بإنشاء ملف db.ts للاتصال:

\n\n
import mongoose from "mongoose";\n\nexport async function connectDB() {\n    await mongoose.connect("mongodb://localhost:27017/mydb");\n    console.log("تم الاتصال بـ MongoDB");\n}
\

المدونات

توصيات الكتب