Как запросить список объектов с массивом в качестве аргумента в GraphQL

Я пытаюсь запросить список объектов, имеющих массив идентификаторов. Что-то похожее на следующий запрос SQL:

SELECT name FROM events WHERE id IN(1,2,3,...);

Как мне добиться этого в GraphQL?


person Rafael Sedrakyan    schedule 16.11.2016    source источник


Ответы (1)


Вы определенно можете запросить массив значений! Вот как будет выглядеть сам запрос:

{
  events(containsId: [1,2,3]) {
    ...
  }
}

И тип будет выглядеть примерно так:

const eventsType = new GraphQLObjectType({
  name: 'events',
  type: // your type definition for events,
  args: {
    containsId: new GraphQLList(GraphQLID)
  },
  ...
});

Если вы хотите параметризовать этот запрос, вот пример:

{
  query: `
    query events ($containsId: [Int]) {
      events(containsId: $containsId) {
        id
        name
      }
    }
  `,
  variables: {
    containsId: [1,2,3]
  }
}
person browserless    schedule 17.11.2016
comment
как будет выглядеть схема? - person Justin Thomas; 02.06.2017
comment
как будет выглядеть [1,2,3] при использовании переменных запроса вместо жесткого кодирования непосредственно в запросе? - person Khorkrak; 02.03.2018
comment
Скорректировал мой ответ с помощью приведенной выше параметризации! - person browserless; 02.03.2018