Как инкапсулировать данные типа, которые будут специфичны для родительского типа в graphql - PullRequest
1 голос
/ 30 июня 2019

У меня есть этот тип игры:

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", чтобы создатьинкрементное значение идентификатора для цели с целью создания URL-адреса для каждой цели, например:

domaine.com / game / {id-of-the-game} / goal / {incremental-id(1,2 ..)}

проблема в том, что тип цели выглядит так, как будто он является отдельной сущностью, он сохранит последний увеличенный идентификатор, даже если это новая игра.

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

1 Ответ

1 голос
/ 16 июля 2019

То, что вы просите, невозможно, используя аннотацию @id. Каждый тип в призменной модели должен иметь уникальный идентификатор для идентификации объекта в базе данных. Если используемая базовая база данных - MongoDB, будет коллекция целей с документами, каждая из которых представляет отдельную цель, идентифицированную идентификатором. Если используемая базовая база данных - MySQL / PostgreSQL, цели будут храниться в таблице целей, где каждая строка представляет отдельную цель.

Каждый отдельный объект (независимо от того, хранится ли он как документ или строка) должен быть однозначно идентифицирован для доступа к нему и для создания отношений, например, между объектами цели и объектами игры.

Если идентификатор цели будет начинаться с 1 для каждой игры, это нарушит уникальное ограничение для поля идентификатора, поскольку две цели в таблице или коллекции будут идентифицироваться по одному и тому же идентификатору (например, 1).

Я бы предложил добавить что-то вроде поля «numberInGame» к типу цели и заполнить его при создании цели (например, принимая во внимание goal.length в Game.type).

Надеюсь, это помогло прояснить ограничение уникальности поля id.

...