You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apollo中使用useQuery实现查询筛选的问题排查

Apollo useQuery 筛选失效问题修复

问题场景

在Apollo Explorer中可通过指定字段筛选查询目标用户,但使用useQuery Hook实现时筛选逻辑失效,返回所有用户数据。

Explorer中可行的查询语句

query ListUsersByType($filter: TableUsersFilterInput) {
  listUsers(filter: $filter) {
    items {
      email
      id
      type
    }
  }
}

对应的变量参数:

{
  "filter": {
    "type": {
      "eq": "ADMIN"
    }
  }
}

失效的useQuery代码示例

const ListUsersByType = gql`
  query ListUsersByType($type: TableUsersFilterInput) {
    listUsers(filter: $type) {
      items {
        email
        id
        type
      }
    }
  }
`
const { data, loading, error } = useQuery(ListUsersByType, {
  variables: {
    filter: {
      type: {
        eq: 'ADMIN',
      },
    },
  },
})

问题原因

  • 变量名不匹配:GraphQL查询中定义的变量是$type,但useQuery的variables传入的键是filter,导致筛选条件根本没传递到查询中,listUsers因未收到过滤参数返回全量数据。
  • 变量命名逻辑错误:未保持和Apollo Explorer中一致的变量命名,应该用$filter对应listUsers的filter参数。

修正后的代码

修正GraphQL查询定义

const ListUsersByType = gql`
  query ListUsersByType($filter: TableUsersFilterInput) {
    listUsers(filter: $filter) {
      items {
        email
        id
        type
      }
    }
  }
`

useQuery调用(无需修改)

const { data, loading, error } = useQuery(ListUsersByType, {
  variables: {
    filter: {
      type: {
        eq: 'ADMIN',
      },
    },
  },
})

修正后即可正确传递筛选条件,仅返回类型为ADMIN的用户数据。

内容的提问来源于stack exchange,提问作者xeno9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:40:32