🔍 راهنمای سازگار با توسعه دهنده 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 چیست؟ در نظرات به من اطلاع دهید! 👇