【问题标题】:Prisma Schema Design User/Trainer relation?Prisma Schema Design 用户/培训师关系?
【发布时间】:2021-08-21 17:29:31
【问题描述】:
enum Role {
  USER
  TRAINER
  ADMIN
}

model User {
  id        Int      @id @default(autoincrement())
  role      Role     @default(USER)
  email     String   @unique
  followers User[]   @relation("FollowRelation", references: [id])
  following User[]   @relation("FollowRelation", references: [id])
  diet Diet[]
}


model Diet {
  id         Int    @id @default(autoincrement())
  name       String
  dietToId   Int  // confused about this part
  dietFromId Int


}

我正在创建一个私人教练应用程序,上面是我定义的架构,我很困惑如何定义饮食图表的架构?

培训师可以为用户提供饮食(两者共享相同的user 架构)

【问题讨论】:

    标签: graphql schema prisma


    【解决方案1】:

    应该是这样的:

    enum Role {
      USER
      TRAINER
      ADMIN
    }
    
    model User {
      id           Int    @id @default(autoincrement())
      role         Role   @default(USER)
      email        String @unique
      followers    User[] @relation("FollowRelation", references: [id])
      following    User[] @relation("FollowRelation", references: [id])
      diets        Diet[] @relation("diets")
      dietsGivenBy Diet[] @relation("dietsGivenBy")
    }
    
    model Diet {
      id         Int    @id @default(autoincrement())
      name       String
      dietTo     User?  @relation("diets", fields: [dietToId], references: [id])
      dietToId   Int?
      dietFrom   User?  @relation("dietsGivenBy", fields: [dietFromId], references: [id])
      dietFromId Int?
    }
    

    就像您为追随者/追随者关系建模一样,饮食也是如此,关系将通过关系名称来消除歧义。

    【讨论】:

    • 非常感谢,确实想到了。
    猜你喜欢
    • 2021-11-28
    • 2017-08-18
    • 2021-02-18
    • 1970-01-01
    • 2016-04-19
    • 2021-08-10
    • 2019-11-27
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多