如何在graphql中封装一种类型的数据以特定于父类型
How to encapsulate data of a type to be specific to the parent type in 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" 混乱来为目标创建一个增量 id 值,目的是为每个目标创建一个 url,如下所示:
domaine.com/game/{id-of-the-game}/goal/{incremental-id(1,2..)}
问题是,Goal 类型看起来像是一个独立的实体,即使是新游戏,它也会保留最后增加的 id。
所以我想为每个新游戏重置 id 序列。
使用@id 批注无法实现您的要求。 prisma 模型中的每个类型都需要有一个唯一的 id 来标识数据库中的对象。如果使用的基础数据库是 MongoDB,则会有一个包含文档的目标集合,每个文档代表一个由 id 标识的单独目标。如果使用的基础数据库是 MySQL/PostgreSQL,则目标将存储在目标 table 中,每一行代表一个单独的目标。
每个单独的对象(无论它是存储为文档还是行)都需要唯一标识才能访问它并创建关系,例如在目标对象和游戏对象之间。
如果每个游戏的目标 ID 从 1 开始,这将违反 id 字段的唯一约束,因为 table 或集合中的两个目标将由相同的 ID(例如 1)标识。
我的建议是简单地向目标类型添加类似 "numberInGame" 字段的内容,并在创建目标时填充它(例如,将 Game.type 中的 goals.length 放入考虑)。
希望这有助于阐明 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..)}
问题是,Goal 类型看起来像是一个独立的实体,即使是新游戏,它也会保留最后增加的 id。
所以我想为每个新游戏重置 id 序列。
使用@id 批注无法实现您的要求。 prisma 模型中的每个类型都需要有一个唯一的 id 来标识数据库中的对象。如果使用的基础数据库是 MongoDB,则会有一个包含文档的目标集合,每个文档代表一个由 id 标识的单独目标。如果使用的基础数据库是 MySQL/PostgreSQL,则目标将存储在目标 table 中,每一行代表一个单独的目标。
每个单独的对象(无论它是存储为文档还是行)都需要唯一标识才能访问它并创建关系,例如在目标对象和游戏对象之间。
如果每个游戏的目标 ID 从 1 开始,这将违反 id 字段的唯一约束,因为 table 或集合中的两个目标将由相同的 ID(例如 1)标识。
我的建议是简单地向目标类型添加类似 "numberInGame" 字段的内容,并在创建目标时填充它(例如,将 Game.type 中的 goals.length 放入考虑)。
希望这有助于阐明 id 字段的唯一性约束。