首页 > 解决方案 > 如果未设置变量,如何禁用 graphql 过滤器?

问题描述

我正在处理带有可配置过滤器的页面。graphql 查询如下所示:

query GetPlayers(
  $offset: Int
  $limit: Int
  $skillIds: [uuid!] = null
  $playerTypeIds: [Int!] = null
  $availability: Int = null
  $timezones: [String!] = null
  $search: String = null
) {
  player(
    order_by: { total_xp: desc }
    offset: $offset
    limit: $limit
    where: {
      availability_hours: { _gte: $availability }
      timezone: { _in: $timezones }
      player_type_id: { _in: $playerTypeIds }
      Player_Skills: { Skill: { id: { _in: $skillIds } } }
      _or: [
        { username: { _ilike: $search } }
        { ethereum_address: { _ilike: $search } }
      ]
    }
  ) {
    id
  }
}

我希望默认行为是返回所有条目。我正在使用 Hasura 1.3.3 并被null解释为{}将返回所有条目。唯一的问题是Player_Skills: { Skill: { id: { _in: $skillIds } } }线路。有一个连接表,外键引用playersandskills表,并且该行将只返回在该表中至少有一个条目的玩家。

$skillIds如果是,是否可以形成一个忽略技能过滤器的查询null

标签: variablesgraphqlhasura

解决方案


推荐阅读