如何使用相同的参数查询 Graphql 2 对象

Posted

技术标签:

【中文标题】如何使用相同的参数查询 Graphql 2 对象【英文标题】:How to query Graphql 2 objects with the same argument 【发布时间】: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
                    ;
                
            
        
    )
)

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于如何使用相同的参数查询 Graphql 2 对象的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL.js Node/Express:如何将对象作为 GraphQL 查询参数传递

Apollo / GraphQL 具有不同参数的相同查询

获取请求的信息对象

如何使用参数创建 GraphQL 对象?

如何将动态参数添加到 graphql 查询中

如何使用 Strapi 在 GraphQL 中添加自定义查询?