【问题标题】:How to query Graphql 2 objects with the same argument如何使用相同的参数查询 Graphql 2 对象
【发布时间】:2019-10-05 13:12:34
【问题描述】:

我正在实施 GraphQL 以使用网络驱动程序从网络查询数据。

我的问题是我无法弄清楚如何使用一个参数作为 2 个不同查询的输入。所以基本上它是从 2 个不同的站点查询数据并且具有相同的输入,通常是 4 个字符的符号。

我希望我的查询看起来像什么。

{
   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
                    };
                }
            }
        }
    })
})

【问题讨论】:

    标签: javascript ecmascript-6 graphql apollo


    【解决方案1】:

    如果我正确理解您的问题,您可以保持架构不变,并在发送查询时使用变量:

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

    变量在文档顶部定义,作为操作定义的一部分。一旦定义,它们可以在文档中使用相同类型的文字值的任何地方使用任意次数。您可以查看有关变量here 和规范here 的官方教程。

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 2018-11-14
      • 2019-12-13
      • 2019-05-25
      • 2018-11-12
      • 1970-01-01
      • 2022-11-19
      • 2017-03-14
      • 1970-01-01
      相关资源
      最近更新 更多