我有这样的架构:
type Game {
id: ID! @id
status: Boolean @default(value: false)
time: DateTime!
location: String!
stadium: String!
teams: [Team!]! @relation(name: "BothTeams")
}
type Team {
id: ID! @id
name: String!
abbrName: String!
teamLogo: String!
score: Int @default(value: 0)
games: [Game!]! @relation(name: "BothTeams")
}
游戏类型通常会返回两支球队,并且每支球队都有一个得分字段。
所以如果我以后想更新游戏,特别是分数字段,
我将不得不更改与更改后的球队的每场比赛的得分。
因此,有一种方法可以更改特定游戏的分数,而无需更改原始分数。
答案 0 :(得分:0)
从概念上讲,score
并不是特定团队的财产。您想将其表示为与两者团队和游戏相关联的独立实体。一种方法:
type Game {
id: ID! @id
status: Boolean @default(value: false)
time: DateTime!
location: String!
stadium: String!
teams: [Team!]! @relation(name: "BothTeams")
scores: [Score!]! @relation(name: "ScoresByGame")
}
type Team {
id: ID! @id
name: String!
abbrName: String!
teamLogo: String!
games: [Game!]! @relation(name: "BothTeams")
}
type Score {
id: ID! @id
value: Int @default(value: 0)
team: Team @relation(name: "ScoreTeam")
}
或者您可以有一个scores
字段和一个homeScore
字段,而不是awayScore
。无论哪种方式,您都将拥有一个Score
节点,您可以对其进行突变而不会影响其他游戏。 Team
的其他每个游戏可能会有所不同的属性都应进行类似处理(例如,如果您想包括玩过该特定游戏的玩家)。