跳到主要內容

Schema 位置

Prisma Schema 的預設名稱是位於 `prisma` 資料夾中的單個檔案 `schema.prisma`。當您的 schema 這樣命名時,Prisma CLI 將自動檢測到它。

Prisma Schema 位置

Prisma CLI 會按以下順序在以下位置查詢 Prisma Schema

  1. --schema 標誌 指定的位置,當您執行 introspectgeneratemigratestudio 時可用

    prisma generate --schema=./alternative/schema.prisma
  2. package.json 檔案中指定的位置(2.7.0 版及更高版本)

    "prisma": {
    "schema": "db/schema.prisma"
    }
  3. 預設位置

    • ./prisma/schema.prisma
    • ./schema.prisma

Prisma CLI 會輸出將使用的 schema 路徑。以下示例顯示了 prisma db pull 的終端輸出

Environment variables loaded from .env
Prisma Schema loaded from prisma/schema.prisma

Introspecting based on datasource defined in prisma/schema.prisma …

✔ Introspected 4 models and wrote them into prisma/schema.prisma in 239ms

Run prisma generate to generate Prisma Client.

多檔案 Prisma Schema

如果您喜歡將 Prisma schema 拆分為多個檔案,您可以進行如下設定

.
├── migrations
├── models
│ ├── posts.prisma
│ ├── users.prisma
│ └── ... other `.prisma` files
└── schema.prisma
注意

多檔案 Prisma schema 自 v6.7.0 起已普遍可用。在此之前,可以透過 prismaSchemaFolder 預覽功能標誌使用它們。

用法

使用多檔案 Prisma schema 時,您必須始終明確指定包含 .prisma 檔案及其 datasource 塊的目錄位置。

您可以透過以下三種方式之一完成此操作

  • --schema 選項傳遞給您的 Prisma CLI 命令(例如 prisma migrate dev --schema ./prisma
  • package.json 中設定 prisma.schema 欄位
    // package.json
    {
    "prisma": {
    "schema": "./prisma"
    }
    }
  • prisma.config.ts 中設定 schema 屬性
    import path from 'node:path'
    import type { PrismaConfig } from 'prisma'

    export default {
    earlyAccess: true,
    schema: path.join('prisma'),
    } satisfies PrismaConfig<Env>

以上所有示例都假設您的 datasource 塊定義在 prisma 目錄中的 .prisma 檔案中。

您還必須將 migrations 目錄放置在定義 datasource 塊的 .prisma 檔案旁邊。

例如,假設 schema.prisma 定義了 datasource,下面是您需要放置 migrations 資料夾的方式

# `migrations` and `schema.prisma` must be on the same level
.
├── migrations
├── models
│ ├── posts.prisma
│ └── users.prisma
└── schema.prisma

多檔案 Prisma Schema 提示

我們發現一些模式能很好地與此功能配合使用,並能幫助您充分利用它

  • 按領域組織檔案:將相關模型分組到同一檔案中。例如,將所有使用者相關模型放在 user.prisma 中,而將帖子相關模型放在 post.prisma 中。
  • 使用清晰的命名約定:schema 檔案應命名清晰簡潔。使用類似 user.prismapost.prisma 這樣的名稱,而不是 myModels.prismaCommentFeaturesSchema.prisma
  • 擁有一個明確的“主”schema 檔案:雖然您現在可以擁有任意數量的 schema 檔案,但您仍然需要一個定義 datasourcegenerator 塊的位置。我們建議使用一個明顯是“主”的單個 schema 檔案,以便這些塊易於查詢。main.prismaschema.prismabase.prisma 是我們見過的一些效果不錯的名稱。

示例

我們對 dub.co 的 dub 的分支是一個真實世界專案適應使用多檔案 Prisma Schema 的絕佳示例。

© . This site is unofficial and not affiliated with Prisma Data, Inc.