gpt4 book ai didi

javascript - 如何有条件地在 GraphQL 查询中包含过滤参数?

转载 作者:行者123 更新时间:2023-12-04 16:38:54 26 4
gpt4 key购买 nike

我有以下 GraphQL 查询(使用 Apollo Client JS):

query GetUsers($searchFilter: String) {
users(
first: 10,
filter: { search: $searchFilter }
) {
nodes {
id
name
}
}
}
当我传入 $searchFilter 时,这很有效争论。但是,我想要这个 $searchFilter参数为 可选 .所以当它是 null它不应用过滤器。
这看起来很简单,但 API 需要 search不可为空。所以传入 filter: { search: null }不被允许。
我想实现以下目标:
query GetUsers($searchFilter: String) {
users(
first: 10,
filter: $searchFilter = null ? null : { search: $searchFilter }
) {
nodes {
id
name
}
}
}
如何有条件地包含 filter争论?

最佳答案

只需为 filter 传递(整个“之前编写/准备的”)值(在查询中定义)变量。未定义此变量使其成为可选的。

query GetUsers($filter: SomeFilterInputType) {
users(
first: 10,
filter: $filter ) {
filter 的传递值在 [查询] 变量中:
{
filter: { search: 'sth'}
}
...在哪里 SomeFilterInputType是 [ users query] arg 类型名称,它可以从 API 规范中读取,在 graphiql/playground docs ... 或服务器代码/类型定义中可用
可以使用 QUERY VARIABLES 在 graphiql/playground 中对其进行测试。
variables从 JavaScript 传递的是一个具有相同结构的对象,很容易有条件地创建/修改。
在这种情况下 SomeFilterInputType (类型名称后没有 ! 标记)意味着它( filter 变量)可以为空/未定义 - 通常可选参数可以为空 (不需要)。如果 API/BE 规范中需要某些 arg,那么客户端中也必须需要它。

关于javascript - 如何有条件地在 GraphQL 查询中包含过滤参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64696988/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com