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

Hasura数组关系过滤问题:日期筛选为空时如何显示全部用户(含无订单用户)

解决方案

核心问题在于:当whereUsers中存在CustomerOrders键(哪怕值是空对象{}),Hasura会自动筛选出存在关联CustomerOrders记录的用户,因此必须在无日期筛选时完全移除这个键,而不是设为空对象。

调整变量构建逻辑

修改whereUsers的生成方式,仅当fromDate和toDate都存在时,才将CustomerOrders的过滤条件加入其中:

variables: {
  order_byUsers: { creationDate: 'desc' },
  whereUsers: {
    deleted_at: { _is_null: true },
    // 仅当有日期筛选时,才添加CustomerOrders过滤条件
    ...(fromDate && toDate ? {
      CustomerOrders: {
        completion_date: {
          _gte: fromDate,
          _lte: toDate
        }
      }
    } : {})
  },
  // 如果需要同时过滤返回的用户订单列表,可保留此变量;否则可移除
  whereCustomerOrders: fromDate && toDate 
    ? { completion_date: { _gte: fromDate, _lte: toDate } }
    : undefined,
  offsetUsers: state.pageSize * state.page,
  limitUsers: state.pageSize
}

关键说明

  • 无日期筛选时,whereUsers仅包含deleted_at的条件,不会关联CustomerOrders,因此会返回所有未删除的用户(包括没有订单的用户)。
  • 若需要在返回用户数据时同步过滤该用户的订单列表,可保留whereCustomerOrders变量,无日期时设为undefined而非空对象,避免不必要的关联判定。
  • User_aggregate使用同一$whereUsers变量,统计结果会自动匹配筛选逻辑:有日期时统计符合订单条件的用户数,无日期时统计所有未删除用户数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:05:22