当前位置: 首页 > 知识库问答 >
问题:

Apollo(GraphQL)在查询中获取多个元素

马国源
2023-03-14

我可以在GraphQL查询中获取多个元素吗?我有许多产品列表数据,我想获取,例如,我的组件中的三个产品。我有一个所需的产品ID数组,我可以将其传递给query吗?这是我对一种产品的查询:

query ProductInCartQuery($id: ID!){
  Product(id: $id) { 
   id
   name
   price
 }
}

但我不认为我可以把它放在一个函数中,然后对三个产品执行三次。

共有2个答案

岑和风
2023-03-14

要将产品ID添加到查询中,可以定义输入类型。见备忘单。

因此,客户机上的查询可能如下所示:

query ProductsInCartQuery($productIds: ProductIds!) {
  Products(productIds: $productIds) {
    id
    name
    price
  }
}
邢心水
2023-03-14

对于您拥有的每种类型,提供两种查询是常见且非常有用的:

>

  • 用于获取具有id或其他唯一字段的单个节点的查询,在您的示例中是Product(您已经有了这个)。

    根据不同的筛选条件获取多个节点的查询,我们称之为allProducts

    然后,您有两个选项可以在一个查询中获取多个产品。

    首先,您可以多次使用产品查询,并使用GraphQL别名来避免响应数据中的名称冲突:

    query ProductInCartQuery($firstId: ID!, $secondId: ID!){
      firstProduct: Product(id: $firstId) { 
        id
        ... ProductInfo
      }
    
      secondProduct: Product(id: $secondId) { 
        id
        ... ProductInfo
      }
    
      fragment ProductInfo on Product {
        name
        price
      }
    } 
    

    您可以根据要查询的ID动态生成此查询字符串。但是,如果不同ID的数量是动态的,则最好使用带有必要过滤器设置的allProducts查询:

    query filteredProducts($ids: [ID!]!) {
      allProducts(filter: {
        id_in: $ids
      }) {
        ... ProductInfo
      }
    }
    
    fragment ProductInfo on Product {
      name
      price
    }
    

    你可以在我为你准备的这个GraphQL操场上自己试一试。更多的背景信息可以在本文中找到。

  •  类似资料:
    • 该查询返回一个“活动”数组,但“归档”数组仍然为空。 我已经尝试了切换(首先将存档别名,切换布尔值以确保我可以访问存档活动的数据等)。问题显然出在“存档”别名上。 当我对Strapi的GraphQL playground使用相同的查询时,我会得到所需的结果: ...返回... 如何使查询在Vue.js中与Apollo一起工作?

    • 我正在使用Apollo服务器,试图为一个电子商务应用程序构造一个嵌套查询。我正在查询一个rest api以检索购物篮中的物品。 然而,此请求的响应并不包含我们需要的所有产品信息。因此,我尝试嵌套一个附加查询,使用返回的参数之一作为变量,以获得所需的附加产品信息。 我已经看到了嵌套查询示例,据我所知(我对GraphQL和Apollo尤其陌生),这是GraphQL的一大优点。但是我还没有看到任何嵌套查

    • 问题内容: 在Apollo React文档http://dev.apollodata.com/react/queries.html#basics中,有显示组件时自动获取的示例,但是我想在单击按钮时运行查询。我看到一个在单击按钮时“重新”获取查询的示例,但我不希望它最初进行查询。我看到有一种方法可以调用变异,但是如何调用查询呢? 问题答案: 您可以通过使用高阶组件传递对Apollo客户端的引用来实现

    • 我有一个在 localhost:3010/graphiql 中正常工作的阿波罗查询: 查询 查询变量 这是我的代码,用于通过调用图形ql()来运行查询: “Chrome 网络”标签会显示预期的请求有效负载: operation name:" getIMs " query:" query getIMs($ fromID:String!,$toID:字符串!){↵instant _ message(f

    • 我刚刚开始在Apollo和Vue中使用GraphQL,所以这可能是一个“愚蠢”的问题,但我不知道怎么做。 如何在同一个视图中执行查询以获取一个对象,并使用变异更新它 假设我有一个简单的模式 和vue组件 现在我应该如何编写模板部分?我可以将产品对象链接到输入中的v模型吗? 谢谢你的帮助。

    • 我有一个apollo包装的组件,它应该为我的组件提供来自github graphql v4 api的响应数据。我打算使用应用程序另一部分的字符串(SEARCH\u QUERY)来用于我的gql查询,但github不断返回未定义的字符串。我在关注阿波罗官方文件http://dev.apollodata.com/react/queries.html#graphql-选项。我看不出我做错了什么。 这个没