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

时间:2018-08-05 11:13:30

标签: 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"
        }
            ]
        }
    }
}

但是在使用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>

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

1 个答案:

答案 0 :(得分:0)

感谢@dkulkarni,我找到了解决方案。在我的GraphiQL中,completedtrue,而在阿波罗,我没有进行设置,所以它是false

我的产品没有completed等于false的东西,所以很混乱。

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