Prisma لجافا سكريبت (Node.js): دليل شامل مع أمثلة

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

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

ابدأ الدورة

Prisma لجافا سكريبت (Node.js): دليل شامل مع أمثلة

Prisma هو ORM (تعيين الكائنات العلائقية) حديث لـ Node.js و TypeScript، يغير جذريًا طريقة التعامل مع قواعد البيانات. على عكس ORMs التقليدية، يقدم Prisma نموذج بيانات تصريحيًا، وتوليدًا تلقائيًا لعميل آمن الأنواع، وأداة قوية للترحيلات. إذا كنت قد سئمت من كتابة استعلامات SQL يدويًا، والارتباك مع أنواع البيانات، وتكوينات ORM المعقدة، فإن Prisma سيكون حلاً مثاليًا لك.

لماذا تحتاج Prisma؟ أولاً، توفر أمان الأنواع على مستوى قاعدة البيانات. هذا يعني أن الأخطاء المتعلقة بأنواع الحقول غير الصحيحة أو العلاقات المفقودة سيتم اكتشافها في مرحلة التجميع، وليس في وقت التشغيل. ثانيًا، تقدم Prisma واجهة برمجة تطبيقات بديهية لعمليات CRUD والتصفية والفرز وتجميع البيانات. ثالثًا، تقوم تلقائيًا بتوليد توثيق لمخطط بياناتك وتسمح لك بإدارة تغييرات المخطط بسهولة من خلال الترحيلات.

يدعم Prisma قواعد البيانات العلائقية الرئيسية: PostgreSQL، MySQL، SQLite، SQL Server، MongoDB (في وضع المستندات). بفضل بنيتها، فهي مثالية لكل من المشاريع الصغيرة وتطبيقات المؤسسات. في هذه المقالة، سنشرح بالتفصيل التثبيت والطرق الأساسية وأمثلة حقيقية لاستخدام Prisma في بيئة Node.js.

التثبيت

يتكون تثبيت Prisma من مرحلتين: تثبيت CLI (واجهة سطر الأوامر) وتهيئة المشروع. نفذ الأوامر التالية في terminal مشروعك:

npm install prisma --save-dev
npm install @prisma/client

بعد التثبيت، قم بتهيئة Prisma في المشروع:

npx prisma init

سينشئ هذا الأمر مجلد prisma مع ملف schema.prisma وملف .env لمتغيرات البيئة. في ملف .env، حدد سلسلة الاتصال بقاعدة البيانات الخاصة بك. على سبيل المثال، لـ PostgreSQL:

DATABASE_URL="postgresql://user:password@localhost:5432/mydb"

لـ MySQL:

DATABASE_URL="mysql://user:password@localhost:3306/mydb"

لـ SQLite (قاعدة بيانات ملفية):

DATABASE_URL="file:./dev.db"

بداية سريعة: مثال عملي بسيط

لنقم بإنشاء نموذج مستخدم بسيط وتنفيذ عمليات أساسية. قم بتعديل ملف prisma/schema.prisma:

// prisma/schema.prisma
generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "sqlite" // أو "postgresql", "mysql"
  url      = env("DATABASE_URL")
}

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int     @id @default(autoincrement())
  title     String
  content   String?
  published Boolean @default(false)
  author    User    @relation(fields: [authorId], references: [id])
  authorId  Int
}

الآن، قم بتنفيذ الترحيل لإنشاء الجداول في قاعدة البيانات:

npx prisma migrate dev --name init

بعد نجاح الترحيل، قم بتوليد Prisma Client:

npx prisma generate

الآن، أنشئ ملف index.js واكتب سكريبت بسيط:

// index.js
const { PrismaClient } = require('@prisma/client');

const prisma = new PrismaClient();

async function main() {
  // إنشاء مستخدم جديد
  const user = await prisma.user.create({
    data: {
      email: 'alice@example.com',
      name: 'Alice',
    },
  });
  console.log('Created user:', user);

  // إنشاء منشور للمستخدم
  const post = await prisma.post.create({
    data: {
      title: '                    

توصيات