首页 > 解决方案 > 查询在 GraphiQL 中工作,但在使用 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"
        }
            ]
        }
    }
}

但是在使用 React Apollo 的 Query 组件时,它会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>

而且我似乎无法弄清楚为什么出了问题?有什么建议么?

标签: javascriptreactjsgraphqlapolloreact-apollo

解决方案


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

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

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


推荐阅读