簡體   English   中英

如何將 Prisma 模型拆分為單獨的文件?

[英]How to split Prisma Model into separate file?

我正在從視頻教程和官方文檔中學習 Prisma ORM。 它們在一個名為schema.prisma的文件中解釋和編寫所有模型代碼。 沒關系,但是,當應用程序增長時,它變得混亂。 那么,我應該如何將我的模型定義分成單獨的文件?

Prisma 尚無法實現這一點。 有關可能的解決方法,請參閱此未決問題https://github.com/prisma/prisma/issues/2377

目前 Prisma 不支持文件分割。 不過,我可以推薦 3 個解決方案。

選項 1:Prismix

Prismix利用模型和枚舉通過 prismix 配置文件為您的 Prisma 模式創建文件之間的關系。

{
  "mixers": [
    {
        "input": [
            "base.prisma",
            "./modules/auth/auth.prisma", 
            "./modules/posts/posts.prisma",
        ],
        "output": "prisma/schema.prisma"
    }
  ]
}

將其放在 prismix.config.json 文件中,該文件將定義您希望如何合並您的 Prisma 分段。

選項 2:方案

Schemaix利用 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");

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.prisma。 我只使用了一個數據庫作為示例(取自文檔),但您應該明白這一點。

選項 3:貓 -> 生成

將您的模式分割成塊部分文件名並運行:

cat *.part.prisma > schema.prisma
yarn prisma generate

在有關支持 Prisma 模式文件分段https://github.com/prisma/prisma/issues/2377的當前 Open issue 中,如果不是全部,其中大部分都在此處引用

有一個名為 Prismix 的庫,它允許您編寫任意數量的模式文件,這里是鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM