تقسیم طرحواره Prisma به چندین پرونده: یک راهنمای ساده

سلام رفیق! امروز ، من می خواهم راه حلی را که برای یک مشکل مشترک با PRISMA پیدا کردم به اشتراک بگذارم. به طور پیش فرض ، Prisma فقط از یک پرونده به نام استفاده می کند schema.prisma برای ذخیره تمام مدلهای پایگاه داده خود. با رشد پروژه شما می تواند کثیف شود. فهمیدم که چگونه آن را به چندین پرونده تقسیم کنم ، و به شما نشان خواهم داد که چگونه این کار را به مرحله به مرحله انجام دهید.
مشکل چیست؟
وقتی شروع به استفاده از Prisma می کنید ، پوشه شما به این شکل است:
prisma
┗ schema.prisma
همه چیز – مدل ها ، تنظیمات ، همه آن – در آن یکی است schema.prisma پرونده برای پروژه های کوچک ، اشکالی ندارد. اما وقتی مدل های بیشتری مانند کاربران ، آدرس ها یا تست ها اضافه می کنید ، به یک پرونده بزرگ و گیج کننده تبدیل می شود. من می خواستم آن را تقسیم کنم:
prisma
┗ 📂 schema
┣ 📜 user.prisma
┣ 📜 address.prisma
┣ 📜 schema.prisma
┗ 📜 test.prisma
به این ترتیب ، هر مدل پرونده خاص خود را دریافت می کند و پروژه تمیز و آسان می ماند. در اینجا نحوه انجام این کار آورده شده است.
آنچه شما قبل از شروع به آن نیاز دارید
- PRISMA نصب شده است: شما باید قبلاً PRISMA را در پروژه خود تنظیم کنید. اگر اینطور نیست ، راهنمای رسمی Prisma را برای نصب آن بررسی کنید.
-
دانش اساسی Prisma: باید بدانید چه چیزی
schema.prismaآیا مانند نحوه تعریف مدل های پایگاه داده شما.
راهنمای گام به گام
مرحله 1: ویژگی خاص را روشن کنید
Prisma دارای ویژگی ای است که به شما امکان می دهد از چندین پرونده طرحواره استفاده کنید ، اما به طور پیش فرض روشن نیست. ما باید آن را روشن کنیم.
- خود را باز کنید
schema.prismaپرونده - پیدا کردن
generator clientقسمت معمولاً اینگونه به نظر می رسد:
generator client {
provider = "prisma-client-js"
}
- یک خط به آن اضافه کنید:
generator client {
provider = "prisma-client-js"
previewFeatures = ["prismaSchemaFolder"]
}
در previewFeatures = ["prismaSchemaFolder"] Line به Prisma می گوید ، “سلام ، بگذارید از چندین پرونده استفاده کنم!” این چیزی است که من کامل است schema.prisma پس از این به نظر می رسد:
generator client {
provider = "prisma-client-js"
previewFeatures = ["prismaSchemaFolder"]
}
datasource db {
provider = "mongodb"
url = env("DATABASE_URL")
}
یادداشت: این ویژگی در “پیش نمایش” است ، بنابراین ممکن است بعداً تغییر کند. برای به روزرسانی به اسناد Prisma توجه داشته باشید.
مرحله 2: یک پوشه جدید برای پرونده های خود بسازید
حال ، بیایید مدل های خود را در پرونده های جداگانه سازماندهی کنیم.
- در داخل
prismaپوشه ، یک پوشه جدید بنامیدschemaبشر - حرکت خود را
schema.prismaپرونده به این جدیدschemaپوشه - برای هر مدل پرونده های جدیدی ایجاد کنید
user.prismaباaddress.prisma، یاtest.prisma– در کنارschemaپوشه
پس از این ، پوشه شما باید شبیه باشد:
prisma
┗ 📂 schema
┣ 📜 user.prisma
┣ 📜 address.prisma
┣ 📜 schema.prisma
┗ 📜 test.prisma
در schema.prisma پرونده هنوز هم generator وت datasource قطعات ، در حالی که سایر پرونده ها می توانند مدل های شما را نگه دارند (مانند user یا address).
مرحله 3: به Prisma بگویید که پرونده های شما کجا هستند
PRISMA باید بداند که پرونده های طرحواره خود را از کجا قرار داده اید. ما package.json پرونده برای این
- خود را باز کنید
package.jsonپرونده - این قسمت را به آن اضافه کنید:
"prisma": {
"schema": "./prisma/schema/"
}
این چیزی است که من است package.json به نظر می رسد پس از اضافه کردن آن:
{
"name": "@repo/database",
"version": "0.0.1",
"dependencies": {
"@prisma/client": "5.15.0"
},
"devDependencies": {
"prisma": "5.15.0"
},
"prisma": {
"schema": "./prisma/schema/"
}
}
این خط می گوید ، “Prisma ، نگاه کنید ./prisma/schema/ برای پرونده های من. “مسیر را دو بار بررسی کنید تا مطمئن شوید که با تنظیم پوشه شما مطابقت دارد.
مرحله 4: اسکریپت های خود را به روز کنید
آخرین مرحله به روزرسانی دستوراتی است که برای Prisma اجرا می کنید ، بنابراین آنها می دانند که پرونده های شما کجاست. ما این کار را در package.json بیش از حد
- پیدا کردن
"scripts"بخش درpackage.jsonبشر - اضافه کردن
-schema=./prisma/schema/پرچم به هر دستور prisma. در اینجا مثالی برای MongoDB آورده شده است:
"scripts": {
"db:generate": "prisma generate -schema=./prisma/schema/",
"db:push": "prisma db push -schema=./prisma/schema/",
"db:pull": "prisma db pull -schema=./prisma/schema/",
"db:studio": "prisma studio -schema=./prisma/schema/"
}
کامل من package.json اکنون به این شکل است:
{
"name": "@repo/database",
"version": "0.0.1",
"private": true,
"scripts": {
"db:generate": "prisma generate -schema=./prisma/schema/",
"db:push": "prisma db push -schema=./prisma/schema/",
"db:pull": "prisma db pull -schema=./prisma/schema/",
"db:studio": "prisma studio -schema=./prisma/schema/"
},
"dependencies": {
"@prisma/client": "5.15.0"
},
"devDependencies": {
"prisma": "5.15.0"
},
"prisma": {
"schema": "./prisma/schema/"
}
}
یادداشت: من از MongoDB استفاده می کنم ، بنابراین دستورات من متناسب با آن است. اگر از یک پایگاه داده متفاوت (مانند PostgreSQL یا MySQL) استفاده می کنید ، تغییر دهید db:* دستورات مطابق با تنظیمات شما. فقط نگه داشتن -schema قسمت همان.
بررسی کنید که آیا کار می کند
برای اطمینان از همه چیز خوب ، یک دستور مانند:
npx prisma generate
یا اگر از PNPM استفاده می کنید:
pnpm run db:generate
اگر بدون خطا اجرا شود ، همه شما تنظیم شده اید! PRISMA اکنون از پرونده های تقسیم شده شما استفاده می کند.
چرا این عالی است
تقسیم طرحواره Prisma در چندین پرونده ، پروژه شما را مرتب نگه می دارد. هر مدل پرونده خاص خود را دارد ، بنابراین یافتن و رفع چیزها آسان است. امیدوارم این راهنما برای شما ساده و واضح باشد. آن را در پروژه خود امتحان کنید ، و به من اطلاع دهید که چگونه در نظرات زیر می رود!
برنامه نویسی مبارک ، دوستان! 🚀



