【问题标题】:Can i create multiple schema in prisma for each model?我可以在 prisma 中为每个模型创建多个模式吗?
【发布时间】:2022-12-28 22:55:51
【问题描述】:

这是 prisma 模式的默认结构......

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "mysql"
  url      = env("DATABASE_URL")
}

model User {
  id Int  @id @default(autoincrement())
  username String @unique @db.VarChar(255)
  role UserRole @default(admin)
  posts Post[]
}

model Post {
  id Int @id @default(autoincrement())
  title String 
  post String @db.VarChar(500)
  created_at DateTime @default(now())
  updated_at DateTime @updatedAt
  user_id Int
  user User @relation(fields: [user_id], references: [id])
}

//custom enums
enum UserRole {
  client
  admin
}

我想为每个模型创建多个模式。用户模型的用户模式,帖子模型的帖子模式。就像我们在猫鼬中使用模型一样。在 Prisma ORM 中有可能吗?

【问题讨论】:

标签: schema prisma


【解决方案1】:

由于 Prisma 还没有针对这个问题推出任何解决方案,所以使用了这个很棒的包Prismix 并解决了这个问题。感谢大家!

【讨论】:

    【解决方案2】:

    现在支持 Prisma multiSchema 作为预览功能。

    看这里https://www.prisma.io/docs/guides/database/multi-schema

    它是在版本4.3.0https://github.com/prisma/prisma/issues/1122#issuecomment-1231773471中引入的

    正如文档所说,您将添加预览功能......

    generator client {
      provider = "prisma-client-js"
      previewFeatures = ["multiSchema"]
    }
    

    然后在你的datasource中记下模式......

    datasource db {
      provider = "mysql"
      url      = env("DATABASE_URL")
      schemas  = ["User", "Post"]
    }
    

    最后在每个模型中添加 @@schema 属性...

    model User {
      id Int  @id @default(autoincrement())
      username String @unique @db.VarChar(255)
      role UserRole @default(admin)
      posts Post[]
    
      @@schema("User")
    }
    
    model Post {
      id Int @id @default(autoincrement())
      title String 
      post String @db.VarChar(500)
      created_at DateTime @default(now())
      updated_at DateTime @updatedAt
      user_id Int
      user User @relation(fields: [user_id], references: [id])
    
      @@schema("Post")
    }
    

    【讨论】:

      【解决方案3】:

      是的,我们可以为每个模型创建多个模式。

      【讨论】:

      • 通过提供解决方案示例及其如何帮助 OP,可以改进您的答案。
      • 没错@Tyler2P 如果可能请 Owali 提供手头解决方案的示例
      猜你喜欢
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      • 2022-07-24
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      相关资源
      最近更新 更多