跳至主要内容

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 拆分成多个文件,可以采用如下设置:

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

多文件 Prisma schemas 自 v6.7.0 起普遍可用。在此之前,可以通过 prismaSchemaFolder 预览功能标志使用它们。

用法

使用多文件 Prisma schema 时,你必须始终明确指定包含 schema 文件(包括带有 generator 块的主 schema.prisma 文件)的目录位置。

你可以通过以下三种方式之一进行操作:

  • --schema 选项传递给你的 Prisma CLI 命令(例如 prisma migrate dev --schema ./prisma

  • package.json 中设置 prisma.schema 字段

    // package.json
    {
    "prisma": {
    "schema": "./prisma"
    }
    }
  • prisma.config.ts 中设置 schema 属性(适用于 Prisma ORM v7)

    import { defineConfig, env } from 'prisma/config'
    import 'dotenv/config'

    export default defineConfig({
    schema: 'prisma/schema.prisma',
    migrations: {
    path: 'prisma/migrations',
    seed: 'tsx prisma/seed.ts',
    },
    datasource: {
    url: env('DATABASE_URL'),
    },
    })
    注意

    我们建议使用 Prisma 配置文件 来指定你的 Prisma schema 的位置。这是指定你的 Prisma schema 位置以及其他配置选项最灵活的方式。

警告

schema.prisma 文件(包含你的 generator 块)必须位于你在 schema 配置中指定的同一目录中。例如,如果你配置 schema: 'prisma',你的 schema.prisma 文件必须位于 prisma/schema.prisma,而不是子目录(例如 prisma/models/schema.prisma)中。

你还必须将 migrations 目录放在与 schema.prisma 文件相同的级别。

例如,假设 schema.prisma 定义了 generator 块,以下是正确的目录结构:

# All files must be inside the `prisma/` directory
# `migrations` and `schema.prisma` must be at the same level
prisma/
├── migrations
├── models
│ ├── posts.prisma
│ └── users.prisma
└── schema.prisma # Contains generator block
信息

如果你的 schema 文件位于 prisma/ 目录中(如上所示),则 Prisma CLI 命令(如 prisma generateprisma migrate dev)将无需额外配置即可工作,因为 ./prisma/schema.prisma 是默认位置。

多文件 Prisma Schema 的使用技巧

我们发现一些模式能很好地与此功能配合使用,并将帮助你充分利用它:

  • 按领域组织文件:将相关模型分组到同一文件中。例如,将所有与用户相关的模型保存在 user.prisma 中,而将与帖子相关的模型保存在 post.prisma 中。
  • 使用清晰的命名约定:schema 文件应命名清晰简洁。使用诸如 user.prismapost.prisma 等名称,而不是 myModels.prismaCommentFeaturesSchema.prisma
  • 拥有一个明显的“主”schema 文件:虽然你现在可以拥有任意数量的 schema 文件,但你仍然需要一个定义 generator 块的位置。我们建议使用一个明显的“主”schema 文件,以便轻松找到此块。我们见过一些运行良好的文件,例如 main.prismaschema.prismabase.prisma

示例

我们对 dub by dub.co 的分叉是一个很好的真实世界项目示例,它已适应使用多文件 Prisma Schema。

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