【问题标题】:Hasura filterring though Array relationshipsHasura 通过数组关系过滤
【发布时间】:2022-12-01 15:53:41
【问题描述】:

我有用户表并且它与 CustomerOrders 有数组关系我需要根据 CustomerOrders completion_date 过滤用户。它有点工作但是当没有选择日期过滤器时我需要显示所有用户,即使是那些没有 CustomerOrder 如果我添加条件结束在空对象 {} 中,它仍然被认为是在查看那个 CustomerOrder,我仍然得到所有拥有 CustomerOrder 的用户。

我的问题是如何在输入为空时完全删除客户订单过滤器?

变量

variables: {
        order_byUsers: { creationDate: 'desc' },
        whereUsers: {
          deleted_at: { _is_null: true }
          // CustomerOrders:
          //   fromDate && toDate
          //     ? {
          //         completion_date: {
          //           _gte: fromDate,
          //           _lte: toDate
          //         }
          //       }
          //     : {}
        },
        whereCustomerOrders: {
          completion_date:
            fromDate && toDate
              ? {
                  _gte: fromDate,
                  _lte: toDate
                }
              : {}
        },
        offsetUsers: state.pageSize * state.page,
        limitUsers: state.pageSize
      }

询问

query GetUsersAnalysisGqlQuery(
    $whereUsers: User_bool_exp
    $whereCustomerOrders: CustomerOrder_bool_exp
    $order_byUsers: [User_order_by!]
    $limitUsers: Int
    $offsetUsers: Int
  ) {
    User(
      where: $whereUsers
      order_by: $order_byUsers
      limit: $limitUsers
      offset: $offsetUsers
    ) {
      id
      nameSurname
      email
      phone
      description
      blocked
      CustomerOrders(where: $whereCustomerOrders) {
        completion_date
      }
      CustomerOrderData {
        order_count
        amount
      }
    }
    User_aggregate(where: $whereUsers) {
      aggregate {
        count
      }
    }
  }

我还尝试为 CustomerOrders 添加 where 变量,但我想我做错了什么。

【问题讨论】:

    标签: graphql hasura


    【解决方案1】:

    你可以使用指令在哈苏拉。

    添加一个布尔变量,其值取决于输入的可用性。

      query GetUsersAnalysisGqlQuery(
        $whereUsers: User_bool_exp
        $whereCustomerOrders: CustomerOrder_bool_exp,
        $inputsAvailable: Boolean,
        $order_byUsers: [User_order_by!]
        $limitUsers: Int
        $offsetUsers: Int
      ) {
        User(
          where: $whereUsers
          order_by: $order_byUsers
          limit: $limitUsers
          offset: $offsetUsers
        ) {
          id
          nameSurname
          email
          phone
          description
          blocked
          CustomerOrders(where: $whereCustomerOrders)@include(if: $inputsAvailable) {
            completion_date
          }
          CustomerOrderData {
            order_count
            amount
          }
        }
        User_aggregate(where: $whereUsers) {
          aggregate {
            count
          }
        }
      }
    

    参考链接 - https://hasura.io/docs/latest/queries/postgres/variables-aliases-fragments-directives/#using-directives

    【讨论】:

      猜你喜欢
      • 2021-05-21
      • 2022-06-11
      • 2019-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2011-10-28
      • 2015-12-20
      相关资源
      最近更新 更多