如何封装特定于graphql中父类型的类型数据

如何封装特定于graphql中父类型的类型数据,graphql,prisma,prisma-graphql,Graphql,Prisma,Prisma Graphql,我有这种游戏类型: type Game { id: ID! @id goals: [Goal] } 与以下方面有目标关系: type Goal { id: Int! @id(strategy: SEQUENCE) @sequence(name: "IncID", initialValue: 1, allocationSize: 20) thumbnail: String! player: String! minute: Int! } 我试图通过“id”混乱来为目标创建

我有这种游戏类型:

type Game {
  id: ID! @id
  goals: [Goal]
}
与以下方面有目标关系:

type Goal {
  id: Int! @id(strategy: SEQUENCE) @sequence(name: "IncID", initialValue: 1, allocationSize: 20)
  thumbnail: String!
  player: String!
  minute: Int!
}
我试图通过“id”混乱来为目标创建一个增量id值,目的是为每个目标创建一个url,如下所示:

domaine.com/game/{id of the game}/goal/{incremental id(1,2..)}

问题是,目标类型看起来像是它自己的实体,即使是新游戏,它也会保留最后一个递增的id


因此,我想为每个新游戏重置id序列。

使用@id注释无法实现您的要求。prisma模型中的每种类型都需要有一个唯一的id来标识数据库中的对象。如果使用的基础数据库是MongoDB,则将有一个目标集合,其中包含文档,每个文档表示由id标识的单个目标。如果使用的基础数据库是MySQL/PostgreSQL,则目标将存储在目标表中,每行表示单个目标

每个单独的对象(无论是存储为文档还是行)都需要唯一标识才能访问它并创建关系,例如目标对象和游戏对象之间的关系

如果每个游戏的目标id从1开始,这将违反id字段的唯一约束,因为表或集合中的两个目标将由相同的id标识(例如1)

我建议只需在目标类型中添加“numberInGame”字段之类的内容,并在创建目标时填充它(例如,考虑游戏中的goals.length.type)


希望这有助于澄清id字段唯一性约束

我在使用postgres,通过做我在上面尝试做的事情,将有多个目标具有相同的id约束,这在定义上是不可能的。我所要做的就是创建另一个字段来保存目标的增量值。我真傻。谢谢佩多克斯。