查询在GraphiQL中工作,但在使用Reaction Apollo时在实际代码中返回空数组

人气:903 发布:2022-10-16 标签: javascript reactjs graphql apollo react-apollo

问题描述

我有一个简单的查询,如下所示

import gql from "graphql-tag";

export const GET_TODOS_BY_PRODUCT = gql`
  query getTodosByProduct(
    $id: ID!
    $completed: Boolean = false
    $limit: Int = 100
  ) {
    product(id: $id) {
      hashtag
      todos(completed: $completed, limit: $limit) {
        body
      }
    }
  }
`;

在GraphiQL中,它返回如下结果-

{
  "data": {
    "product": {
      "todos": [
        {
          "body": "Remove Custom Font from Tweet #a2k",
          "product": {
            "id": "1439"
          },
          "__typename": "Todo"
        },
        {
          "body": "Make Site a PWA #a2k",
          "product": {
            "id": "1439"
          },
          "__typename": "Todo"
        }
            ]
        }
    }
}
但是在使用Reaction Apollo的查询组件时,它正确地返回hashtag,但将todos作为空数组[]&;返回。我似乎找不出查询出了什么问题。

如果我从todos外部的查询中提取其他参数,则它会正确地返回这些参数,但只有todos返回空数组[]

我的请求如下-

<Query
      query={GET_TODOS_BY_PRODUCT}
      variables={{ id: state.get("selectedProduct.id") }}
    >
      {({ data: { product } }) => {
        return <Main todos={product.todos} hashtag={product.hashtag} />;
      }}
</Query>

我似乎不明白为什么会出问题?有什么建议吗?

推荐答案

多亏了@dkulkarni我找到了解决方案。在我的GraphiQL中,completedtrue&;在Apollo中,我没有设置它,所以它是false

并且我的产品没有任何completed等于false,所以它搞砸了。

再次感谢@dkulkarni我为这件事浪费了2个小时

389