Отношения многие ко многим в GraphQL Apollo - PullRequest
0 голосов
/ 29 июня 2019

Когда я начинаю конкретизировать свой первый бэкэнд GraphQL, у меня возникает проблема с тем, как обрабатывать модели «многие ко многим» в схемах и средствах разрешения, когда нужны сводные таблицы.

Скажем, у меня естьПользователи и команды.Каждый из них принадлежит ToMany в сводной таблице с именем UserTeam.Вопрос в том, как лучше всего обрабатывать поток данных с помощью резольверов.

Теперь я могу справиться с этим, создав схему для сводной таблицы и подключив к ней отношения решателя.Но это кажется таким грязным.Если я это сделаю, запросы будут заканчиваться, например:

query{
    user(ID: "1"){
        userTeams(){
            team{
                name
            }
        }
    }
}

Теперь должен быть лучший способ сделать это.Я просто не знаю, что это такое.

Ответы [ 2 ]

1 голос
/ 29 июня 2019

Sequelize поддерживает принадлежащие ToMany ассоциации, которые позволяют запрашивать связанную модель - другую таблицу / модель.Это то, что обычно используется для отношений M2M, по крайней мере, когда вам не нужны данные из самой сводной таблицы.Например, определение отношения типа:

User.belongsToMany(Team, {through: 'UserTeam'})

позволит вам вызвать соответствующий метод для возвращенного экземпляра:

user.getTeams()

Аналогично, связанные модели могут быть включены при использовании метода поиска:

User.findOne({ include:[Team] })

Подробнее смотрите в документации.

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

Запрос будет / должен быть немного проще:

query{
  user(ID: "1"){
    userTeams {
      name
    }
  }
}

, потому что userTeams будет (преобразователь должен возвращать) массив типа team.

Кажется менее грязным?

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