برنامه نویسی

🔍 راهنمای سازگار با توسعه دهنده Prisma با Next.js (از اصول گرفته تا ویژگی های قدرتمند)

📌 بررسی اجمالی

Prisma یک است مدرن و از نوع ORM ایمن این امر گردش کار پایگاه داده را در برنامه های بعدی. JS ساده می کند. به جای نوشتن SQL خام یا برخورد با سازندگان پرس و جو پیچیده ، دریافت می کنید: \
طرح (schema.prisma))
نمایش داده شده توسط نوع خودکار ، از نوع ایمن (@prisma/client))
ادغام بدون درز با Next.js (مسیرهای API ، مؤلفه های سرور ، اقدامات سرور) \
ویژگی های قدرتمند مانند روابط ، فیلتر ، صفحه بندی و حافظه پنهان

این راهنما را پوشش می دهد همه چیز— از راه اندازی اولیه گرفته تا الگوهای پیشرفته — بنابراین می توانید بسازید مقیاس پذیر ، از نوع ایمن برنامه های تمام پشته با سهولت.


Prisma چیست؟

Prisma یک است نسخه اول برای node.js که دسترسی به پایگاه داده را ساده می کند. پشتیبانی می کند:

  • پس از

  • mysql

  • ساق پا

  • سرور SQL

  • MongoDB (پیش نمایش)

به جای نوشتن SQL ، شما مدل ها را در یک تعریف می کنید schema.prisma پرونده ، و Prisma یک مشتری کاملاً تایپ شده برای شما ایجاد می کند.


⚙ چرا prisma + next.js = ❤

next.js (مخصوصاً با روتر برنامه و اجزای سرور) جفت کاملاً با Prisma. شما می توانید: \
مدل ها را تعریف کنید در یک طرح اعلامی \
یک مشتری از نوع ایمن ایجاد کنید (@prisma/client))
DB خود را پرس و جو کنید در مسیرهای API ، اقدامات سرور یا دستیار مسیر \
به طور خودکار و ایمنی را تایپ کنید خارج از جعبه

هیچ تعاریف نوع دستی یا خطاهای زمان اجرا وجود ندارد — تعاملات پایگاه داده قابل پیش بینی صاف و قابل پیش بینی.


🛠 تنظیم سریع

1⃣ پراسما را نصب کنید

npm install prisma @prisma/client
npx prisma init
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2 طرح خود را تعریف کنید در prisma/schema.prisma

model User {
  id    Int     @id @default(autoincrement())
  name  String
  email String  @unique
  posts Post[]
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3⃣ پایگاه داده خود را همگام سازی کنید

npx prisma db push  # For quick dev updates
npx prisma migrate dev  # For production migrations
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

4⃣ از Prisma در برنامه Next.js خود استفاده کنید

import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()

const users = await prisma.user.findMany()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


🚀 ویژگی های پیشرفته Prisma

🔍 فیلتر و پرس و جو

API پرس و جو پریسما است بی نظیر و از نوع ایمن:

// Find users with emails ending in "@gmail.com"
const users = await prisma.user.findMany({
  where: {
    email: { endsWith: "@gmail.com" },
    posts: { some: { likes: { gt: 100 } } }
  }
})
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

📄 انتخاب و شامل (بهینه سازی نمایش داده شد)

واگذار کردن فقط آنچه شما نیاز دارید:

// Get only user names and their post titles
const users = await prisma.user.findMany({
  select: {
    name: true,
    posts: { select: { title: true } }
  }
})
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

📦 صفحه

نیازی به کتابخانه اضافی نیست:

// Pagination: skip 10, take 5
const posts = await prisma.post.findMany({
  skip: 10,
  take: 5
})
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Crud آسان شد

// Create
await prisma.user.create({ data: { name: "Alice" } })

// Update
await prisma.user.update({ where: { id: 1 }, data: { name: "Bob" } })

// Delete
await prisma.user.delete({ where: { id: 1 } })
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

🔗 روابط و تو در تو می نویسد

تعریف کردن یک بهبا خیلی زیاد، یا یک به یک روابط در طرح شما:

model Post {
  id     Int    @id @default(autoincrement())
  title  String
  author User   @relation(fields: [authorId], references: [id])
  authorId Int
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

سپس داده های تو در تو را به راحتی پرس و جو کنید:

const postsWithAuthors = await prisma.post.findMany({
  include: { author: true }
})
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

🌱 بذر پایگاه داده خود را

استفاده کردن prisma/seed.ts برای جمع آوری داده های آزمون:

import { PrismaClient } from '@prisma/client'
const prisma = new PrismaClient()

async function seed() {
  await prisma.user.createMany({
    data: [
      { name: "Alice", email: "alice@example.com" },
      { name: "Bob", email: "bob@example.com" }
    ]
  })
}
seed()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اجرا با:

npx prisma db seed
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


ذخیره سازی و اعتبارسنجی در Next.js

Prisma با ذخیره کردن ، اما Next.js این کار را انجام می دهد!

گزینه 1: حافظه پنهان سمت سرور

// Force-cache (default)
fetch('/api/users', { cache: 'force-cache' })

// No-store (always fresh)
fetch('/api/users', { cache: 'no-store' })
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

گزینه 2: اعتبار سنجی دستی

// Revalidate a route after a mutation
revalidatePath('/dashboard')
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


thoughts افکار نهایی

prisma + next.js یک است تغییر بازی برای devs تمام پشته. شما دریافت می کنید:
نمایش داده های پایگاه داده ایمن
crud Zero-boilerplate
API تمیز و بصری
ابزارهای داخلی مانند استودیوی Prisma (npx prisma studio)

اگر از Next.js استفاده می کنید ، Prisma را امتحان کنید این یکی از آن ابزارهایی است که فقط درست احساس می شودبشر


🔥 چه چیزی بعدی؟

ORM مورد علاقه شما برای Next.js چیست؟ در نظرات به من اطلاع دهید! 👇


نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا