Hasura查询中Int类型变量传入null值的问题求助
解决GraphQL查询中可空Int变量传入null报错的问题
直接修改查询,通过条件分支在单个请求中同时处理superior_id为null和非null的情况:
query GetSortHierarchy($device_id: Int!, $filter_id: Int!, $superior_id: Int) { devices_by_pk(id: $device_id) { filter_types(where: {id: {_eq: $filter_id}}) { sort_groups( where: { _cond: { if: { _is_null: { superior_id: $superior_id } }, then: { superior_id: { _is_null: true } }, else: { superior_id: { _eq: $superior_id } } } } ) { id name rank sort_group { id superior_id } superior_id } } } }
原理说明:
- 原查询报错的核心原因是
_eq操作符不接受null作为参数,即便变量$superior_id定义为可空的Int类型也无法兼容 - 使用
_cond条件分支实现逻辑切换:- 先判断变量
$superior_id是否为null - 如果是null,执行
then分支,匹配数据库中superior_id为空的记录 - 如果非null,执行
else分支,匹配superior_id等于变量值的记录
- 先判断变量
这样无需拆分两次查询,单个请求即可覆盖两种场景,同时支持传入null值。
内容的提问来源于stack exchange,提问作者Filip Kaniok
相关产品推荐
相关产品推荐

