【问题标题】:OrderByChild on a query after filtering list using Firebase使用 Firebase 过滤列表后查询 OrderByChild
【发布时间】:2017-06-22 11:33:54
【问题描述】:

我有一个从 Firebase 后端获取数据的 Ionic 移动应用。在一个页面上,我得到一个站点列表,其中包含每个站点的位置和当前价格。我想做的是按位置过滤列表,然后按价格排序。

    let query = this.db.list('/stations', {
      query: {
        orderByChild: 'distanceFromUser',
        endAt: 50.0,
        limitToFirst: 20
      }
    });

    this.stations = query, {
      query: {
        orderByChild: 'currentPrice',
      }
    }

这段代码显然不起作用,但它显示了我想要完成的任务。首先使用 50 公里半径内的 20 个最近的车站创建一个查询,然后按 currentPrice 对这个列表进行排序。

有没有办法通过 Firebase 实现这一点?

【问题讨论】:

  • 正如 Saksham 所说,Firebase 对一种排序/过滤属性的限制的常见解决方法是将要过滤的值组合到一个属性中。但是以允许对它们执行范围查询的方式组合其中的两个数值是非常罕见的。我唯一见过的是 Geofire,它将纬度和经度组合成一个可查询的属性。

标签: javascript firebase ionic-framework firebase-realtime-database angularfire2


【解决方案1】:

您可以尝试创建一个新的孩子,将两者结合起来,例如 distanceFromUser_currentPrice,然后在查询中使用它。

此外,您在 50 公里半径内查找 20 个最近车站的查询将无法正常工作,因为 endAt 还会返回距离为 150.0、250.0 等的车站。

【讨论】:

    猜你喜欢
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    相关资源
    最近更新 更多