【问题标题】:Graphql optional operation variablesGraphql 可选操作变量
【发布时间】:2017-03-18 04:43:01
【问题描述】:

我正在尝试使用可选的过滤器参数编写一个简单的查询

例如

const query = gql`query FilteredPeople($email: String) {
  people(email: $email) {
    fullName
    email
  }
}`;

我不断得到

"Network error: The inline argument "email" is expected as a variable but was not provided."

这让我觉得它在服务器端,但我的架构非常简单

const RootQuery = `
    type RootQuery {
      people(email: String): [Person]
    }
`;

查看 graphql 规范以指定某些内容是否是可选的,您使用 !。如您所见,电子邮件不是必需的。

注意我正在使用 apollo 客户端/服务器和 react-apollo。我的版本

server
    "graphql": "^0.7.2",
    "graphql-server-express": "^0.4.3",

client
    "apollo-client": "0.5.0",
    "graphql-tag": "0.1.15",
    "react-apollo": "0.5.16",

我错过了什么吗?我以为我修好了它,但它停止了工作,所以我猜不是。

【问题讨论】:

    标签: graphql apollostack react-apollo


    【解决方案1】:

    虽然看起来 String 可以为空,但实际上如果你决定不传递任何东西,就像这样:

    const query = gql`query {
      people {
        fullName
        email
      }
    }`;
    

    但是,如果您确实像在问题中那样使用传入参数,那么您必须定义该变量。

    希望有帮助!

    【讨论】:

      【解决方案2】:

      经过进一步调查,这似乎是预期的行为。

      http://facebook.github.io/graphql/#sec-All-Variables-Used

      定义操作时必须使用操作变量。

      【讨论】:

        猜你喜欢
        • 2021-07-22
        • 2019-06-08
        • 2021-04-17
        • 2021-11-20
        • 1970-01-01
        • 2019-08-23
        • 1970-01-01
        • 2022-01-02
        相关资源
        最近更新 更多