Graphql可选操作变量

时间:2016-11-04 11:07:39

标签: graphql apollostack react-apollo

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

例如

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",

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

虽然看起来字符串可以为空,但实际上如果您决定不传递任何内容,那么:

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

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

希望有所帮助!