跳至主要内容

架构位置

Prisma 架构的默认名称是您 prisma 文件夹中的单个文件 schema.prisma。 当您的架构以这种方式命名时,Prisma CLI 会自动检测到它。

如果您使用的是 prismaSchemaFolder 预览功能,则 prisma/schema 目录中的任何文件都会被自动检测到。

Prisma 架构位置

Prisma CLI 会按以下顺序在以下位置查找 Prisma 架构

  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 会输出将使用的架构的路径。 以下示例显示了 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 架构

提示

多文件 Prisma 架构可通过 Prisma 版本 5.15.0 及更高版本中的 prismaSchemaFolder 预览功能使用。

要使用多个 Prisma 架构文件,请在当前 prisma 目录中添加一个 schema 文件夹。 启用 prismaSchemaFolder 预览功能后,您可以将任意数量的文件添加到 prisma/schema 目录中。

my-app/
├─ ...
├─ prisma/
│ ├─ schema/
│ │ ├─ post.prisma
│ │ ├─ schema.prisma
│ │ ├─ user.prisma
├─ ...

如何启用多文件 Prisma 架构支持

对多个 Prisma 架构文件的支持目前处于预览阶段。 要启用此功能,请将 prismaSchemaFolder 功能标志添加到 Prisma 架构中 generator 块的 previewFeatures 字段

schema.prisma
generator client {
provider = "prisma-client-js"
previewFeatures = ["prismaSchemaFolder"]
}

datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
信息

首次更新到 Prisma ORM 5.15.0 或更高版本时,您的 IDE 可能无法立即识别新的多文件格式。 请务必重新启动您的 IDE,以确认您已安装最新版本的 Prisma VS Code 扩展。

如何使用现有 Prisma CLI 命令处理多个 Prisma 架构文件

对于大多数 Prisma CLI 命令,使用多文件 Prisma 架构不需要进行任何更改。 只有在您需要通过选项提供架构的特定情况下,才需要更改命令。 在这些情况下,只需将对文件的引用替换为目录即可。 例如,以下 prisma db push 命令

npx prisma db push --schema custom/path/to/my/schema.prisma

将变为以下内容

npx prisma db push --schema custom/path/to/my/schema  # note this is now a directory!

多文件 Prisma 架构的提示

我们发现一些模式非常适合此功能,并将帮助您充分利用它

  • 按领域组织文件:将相关模型分组到同一个文件中。 例如,将所有与用户相关的模型保留在 user.prisma 中,而将与帖子相关的模型保留在 post.prisma 中。 尽量避免使用“万金油”架构文件。

  • 使用清晰的命名约定:架构文件应命名清晰简洁。 使用诸如 user.prismapost.prisma 之类的名称,而不是 myModels.prismaCommentFeaturesSchema.prisma 之类的名称。

  • 具有一个明显的“主”架构文件:虽然您现在可以拥有任意数量的架构文件,但您仍然需要一个地方来定义 datasourcegenerator 块。 我们建议使用一个明显是“主”文件的单个架构文件,以便这些块易于查找。 main.prismaschema.prismabase.prisma 是我们发现的一些效果很好的名称。

示例

我们对 dub 的 fork,由 dub.co 提供 是一个很好的现实世界项目示例,该项目已改编为使用多文件 Prisma 架构。

详细了解 prismaSchemaFolder 预览功能

要对 prismaSchemaFolder 预览功能提供反馈,请参考 我们专门的 Github 讨论.