изменить связанное поле без изменения исходного - PullRequest
1 голос
/ 04 июня 2019

У меня есть эта схема:

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

Тип игры будет возвращать, как правило, две команды, и у каждой команды будет поле для подсчета очков.

поэтому, если я захочу обновить игру позже, в частности, поле счета,

Мне бы пришлось менять счет в каждой игре с этой измененной командой.

Итак, есть ли способ изменить счет конкретной игры, не изменяя исходный счет.

1 Ответ

0 голосов
/ 04 июня 2019

Концептуально, 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, которые могут изменяться в каждой игре, должны обрабатываться аналогично (например, если вы хотите указать, какие игроки играли в эту конкретную игру).

...