Graphql GrahpQL:使用多个可选参数创建请求
使用apollo客户端和graphql标记我试图创建一个类似以下内容的请求:Graphql GrahpQL:使用多个可选参数创建请求,graphql,apollo,graphql-js,apollo-client,Graphql,Apollo,Graphql Js,Apollo Client,使用apollo客户端和graphql标记我试图创建一个类似以下内容的请求: gql` { data( filter: ${options.filter} sort: ${options.sort} limit: ${options.limit} offset: ${options.offset} ) { name }
gql`
{
data(
filter: ${options.filter}
sort: ${options.sort}
limit: ${options.limit}
offset: ${options.offset}
) {
name
}
}
`
但是,并非所有这些选项都始终设置,有时我可能只使用“限制”和“偏移”。但是如果我不设置它们,我会得到预期的Int类型,发现未定义。
我是否应该预先循环我的options对象,并将任何
未定义的值与null
交换?还是有更好的方法来组织这个问题?您应该避免在查询中使用占位符作为值,而是使用变量。因此,您的查询现在看起来像这样:
const MY_QUERY = gql`
query MyQuery($filter: String, $sort: String, $limit: Int, $offset: Int) {
data (
filter: $filter
sort: $sort
limit: $limit
offset: $offset
) {
name
}
}
`
注意:您为变量定义的类型需要与过滤器、排序、限制和偏移参数的模式匹配
现在,您可以在呈现Query
组件时传入变量:
<Query query={MY_QUERY} variables={{ limit: 10, offset: 20 }}>
{({ loading, error, data }) => {
// ...
}}
</Query>
或直接使用客户机:
query({query:MY_query,变量:{limit:10,offset:20}})
如果有任何变量未定义,它们将被忽略,您无需再做任何事情。啊,谢谢,看起来我肯定遗漏了一些内容,所以我将继续阅读。我们目前不使用任何受支持的视图库(react、angular等),因此有时很难理解这些示例。HOC代表什么?对不起,我有一个坏的倾向,认为每个人都使用React:P HOC代表高阶组件,是一个React概念。我已经编辑了我的答案,以包括一个示例,说明如何在直接使用客户机时使用变量。有关更多详细信息,请参阅文档:谢谢,现在它更有意义了。Lol我花了很长时间才弄明白我也不必将类型添加到客户端,例如,我有一个服务器枚举数据排序,我正试图将枚举添加到我的查询中,这样我就可以将它添加到查询MyQuery(…)
。。。最终为我指明了正确的方向
graphql(MY_QUERY, { options: (props) => ({ variables: { limit: 10, offset: 20 } }) }