我正在从视频教程和官方文档中学习Prisma ORM。它们在一个名为schema.prisma
的文件中解释和编写所有模型代码。没关系,但是,当应用程序增长时,它就变得凌乱不堪。那么,我应该如何将我的模型定义分离成单独的文件呢?
发布于 2022-06-29 03:00:50
此时,Prisma不支持文件分割。不过,我可以推荐3种解决方案。
选项1: Prismix
普里斯米克利用模型和枚举为您的Prisma模式创建跨文件的关系,通过一个prismix配置文件。
{
"mixers": [
{
"input": [
"base.prisma",
"./modules/auth/auth.prisma",
"./modules/posts/posts.prisma",
],
"output": "prisma/schema.prisma"
}
]
}
将其放置在prismix.config.json文件中,该文件将定义如何合并Prisma分段。
选项2: Schemix
Schemix利用类型记录配置来处理模式分段。
例如:
// _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");
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")');
然后,这将生成包含完整模式的prisma/schema.prma。我只使用一个数据库作为示例(摘自文档),但您应该明白这一点。
选项3: Cat ->生成
将模式分割为块部件文件名并运行:
cat *.part.prisma > schema.prisma
yarn prisma generate
这些(如果不是全部的话)中的大多数都是在当前开放的关于支持Prisma模式文件分段https://github.com/prisma/prisma/issues/2377的问题中引用的
发布于 2022-02-17 23:07:01
这在普里斯马看来是不可能的。关于可能的解决方案,请参阅这个悬而未决的问题,https://github.com/prisma/prisma/issues/2377。
发布于 2022-02-18 22:47:14
有一个名为Prismix的库,它允许您编写任意数量的模式文件,下面是链接
https://stackoverflow.com/questions/71163623
复制相似问题