Graphql 更改相关字段而不更改原始字段

Graphql 更改相关字段而不更改原始字段,graphql,prisma,Graphql,Prisma,我有这个模式: 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! teamL

我有这个模式:

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")
}
游戏类型通常会返回两个队,每个队都有一个得分场

因此,如果我想稍后更新游戏,特别是分数字段

我将不得不改变每一场比赛的比分与改变的球队


那么,有没有一种方法可以在不改变原始分数的情况下改变特定游戏的分数呢

从概念上讲,
分数
并不是特定团队的财产。您希望将其表示为一个单独的实体,该实体与团队和游戏都关联。一种方法是:

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")
}

或者,您可以有一个
homeScore
字段和一个
awayScore
字段,而不是
scores
。无论哪种方式,您都将拥有一个
得分
节点,可以在不影响其他游戏的情况下进行变异。
团队的任何其他属性
可能随每场比赛而变化,应以类似方式处理(例如,如果您想包括该特定游戏的玩家)。

从概念上讲,
分数
实际上不是特定团队的属性。您希望将其表示为一个单独的实体,该实体与团队和游戏都关联。一种方法是:

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")
}

或者,您可以有一个
homeScore
字段和一个
awayScore
字段,而不是
scores
。无论哪种方式,您都将拥有一个
得分
节点,可以在不影响其他游戏的情况下进行变异。
团队的任何其他属性,可能因每场游戏而异,都应该以类似的方式处理(例如,如果您想包括该特定游戏的玩家)。

这将是一种更好的方法,感谢Daniel的帮助。
游戏。在构建“仅附加”系统时,还应该提取状态版本化的“分数”可以包含时间(偏移到游戏开始)和玩家(更改“作者”)-构建游戏时间线(最后一个=>游戏结果)。分数应与游戏相关(与ScoresByGame相反)-f.e.对于游戏列表,玩家已更改结果。这将是更好的方法,感谢Daniel的帮助。
Game。在构建“仅附加”系统时,还应提取状态版本化的“分数”可以包含时间(偏移到游戏开始)和玩家(更改“作者”)-构建游戏时间线(最后一个=>游戏结果)。分数应与游戏相关(与ScoresByGame相反)-f.e.对于游戏列表,玩家已更改结果。