Как сделать запрос к объектам Graphql 2 с одинаковым аргументом - PullRequest
0 голосов
/ 18 мая 2019

Я использую GraphQL для запроса данных из Интернета с помощью веб-драйвера.

Моя проблема в том, что я не могу понять, как использовать один аргумент в качестве входных данных для 2 разных запросов. Таким образом, в основном он запрашивает данные с 2 разных сайтов и имеет один и тот же ввод, который обычно составляет 4 символа Symbol.

Как я хочу, чтобы мой запрос выглядел.

{
   Webpage1(symbol:"AABC"){
       data_from_site,
       some_other_data
       Webpage2(symbol:"AABC"){ ##get rid of this Double attribute entry
          data_from_page2
       }  
   }
}

Как я могу передать только один аргумент и получить данные с обоих сайтов? Так что это будет в корневом контексте для использования решателем.

Я довольно новичок в GraphQL и попытался определить отдельный GraphQLObjectType для решения этой проблемы. Но то, что я действительно ищу, это объединенные данные в одном и том же объекте и аргументы, проанализированные из родительского объекта.

var schema = new GraphQLSchema({
    query: new GraphQLObjectType({
        name: 'Query',
        fields: {
            Webpage1: {
                type: Website1,
                args: {
                    symbol: { type: GraphQLString },
                    //date: { type: GraphQLString }

                },
                resolve: function (_, { symbol }) {
                    return {
                        symbol
                    };
                }
            },
            Webpage2: {
                type: History,
                resolve: function (_, { symbol }) {
                    return {
                        symbol
                    };
                }
            }
        }
    })
})

1 Ответ

3 голосов
/ 18 мая 2019

Если я правильно понимаю ваш вопрос, вы можете оставить свою схему как есть и просто использовать переменную при отправке запроса:

query MyQuery($mySymbol: String){
  Webpage1(symbol:$mySymbol) {
    data_from_site
    some_other_data
  }
  Webpage2(symbol:$mySymbol) {
    data_from_page2  
  }
}

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

...