我有这个游戏类型:
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} / goal / {incremental-id(1,2 ..)}
问题是,Goal类型看起来像是它自己的实体,即使是新游戏,它也将保留最后递增的id。
所以我想为每个新游戏重置ID顺序。
答案 0 :(得分:1)
使用@id注释无法实现您的要求。 pyramida模型中的每种类型都必须具有唯一的ID,以标识数据库中的对象。如果使用的基础数据库是MongoDB,则将有一个目标集合,其中包含文档,每个文档代表由ID标识的单个目标。如果使用的基础数据库是MySQL / PostgreSQL,则目标将存储在目标表中,每一行代表一个单独的目标。
每个单独的对象(无论它是存储为文档还是行)都需要唯一标识,以访问它并创建关系,例如在目标对象和游戏对象之间。
如果每个游戏的目标ID从1开始,这将违反ID字段的唯一约束,因为表或集合中的两个目标将由相同的ID标识(例如1)。
我的建议是在目标类型中简单地添加一个“ numberInGame”字段,然后在创建目标时将其填充(例如,考虑Game.type中的Goals.length)。
希望有助于弄清id字段唯一性约束。