在不改变原始字段的情况下更改相关字段
change a related field without mutating the original one
我有这个架构:
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")
}
游戏类型 return 通常是两支球队,每支球队都有一个得分场。
所以如果我想稍后更新游戏,特别是分数字段,
我将不得不改变换了那支球队的每场比赛的比分。
那么,有没有办法在不改变原始分数的情况下更改特定游戏的分数。
从概念上讲,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
的任何其他属性可能因每个游戏而异,应以类似方式对待(例如,如果您想包括玩家玩该特定游戏的内容)。
我有这个架构:
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")
}
游戏类型 return 通常是两支球队,每支球队都有一个得分场。
所以如果我想稍后更新游戏,特别是分数字段,
我将不得不改变换了那支球队的每场比赛的比分。
那么,有没有办法在不改变原始分数的情况下更改特定游戏的分数。
从概念上讲,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
的任何其他属性可能因每个游戏而异,应以类似方式对待(例如,如果您想包括玩家玩该特定游戏的内容)。