Has*_*man 16 sql orm node.js typescript prisma
我正在通过视频教程和官方文档学习 Prisma ORM。他们解释并编写所有模型代码在一个名为schema.prisma
. 没关系,但是当应用程序增长时,它就会变得混乱。那么,我应该如何将模型定义分离到单独的文件中?
小智 10
目前 Prisma 不支持文件分割。不过我可以推荐 3 个解决方案。
选项 1:Prismix
Prismix使用模型和枚举通过 prismix 配置文件为 Prisma 模式创建跨文件的关系。
{
"mixers": [
{
"input": [
"base.prisma",
"./modules/auth/auth.prisma",
"./modules/posts/posts.prisma",
],
"output": "prisma/schema.prisma"
}
]
}
Run Code Online (Sandbox Code Playgroud)
将其放置在 prismix.config.json 文件中,该文件将定义您希望如何合并 Prisma 分段。
选项 2:Schemix
Schemax利用 Typescript 配置来处理模式分段。
例如:
// _schema.ts
import { createSchema } from "schemix";
export const PrismaSchema = createSchema({
datasource: {
provider: "postgresql",
url: {
env: "DATABASE_URL"
},
},
generator: {
provider: "prisma-client-js",
},
});
export const UserModel = PrismaSchema.createModel("User");
import "./models/User.model";
PrismaSchema.export("./", "schema");
Run Code Online (Sandbox Code Playgroud)
User.model 内部
// models/User.model.ts
import { UserModel, PostModel, PostTypeEnum } from "../_schema";
UserModel
.string("id", { id: true, default: { uuid: true } })
.int("registrantNumber", { default: { autoincrement: true } })
.boolean("isBanned", { default: false })
.relation("posts", PostModel, { list: true })
.raw('@@map("service_user")');
Run Code Online (Sandbox Code Playgroud)
然后,这将生成包含完整架构的 prisma/schema.prisma。我仅使用一个数据库作为示例(取自文档),但您应该明白这一点。
选项 3: Cat -> 生成
将您的架构分割为块部分文件名并运行:
cat *.part.prisma > schema.prisma
yarn prisma generate
Run Code Online (Sandbox Code Playgroud)
其中大多数(如果不是全部)都在当前有关 Prisma 架构文件分段支持的开放问题中引用https://github.com/prisma/prisma/issues/2377
归档时间: |
|
查看次数: |
20352 次 |
最近记录: |