【问题标题】:FirebaseDatabase Query - Filter where date is higher than nowFirebaseDatabase 查询 - 过滤日期高于现在的位置
【发布时间】:2020-03-09 18:56:32
【问题描述】:

我有许多 Firebase 事件项目,它们的日期时间存储为 Epoch。

我想做的是获取当前时间,然后过滤尚未发生的结果。目前我只是按日期时间订购

那么我如何为此添加条件以使“日期时间”高于“时间”

long time = System.currentTimeMillis();

    Query query = FirebaseDatabase.getInstance()
            .getReference()
            .child("Events").orderByChild("datetime");

JSON

  "date" : "Sat 7th March",
  "datetime" : 1583618400,

【问题讨论】:

  • 这取决于你如何在数据库中存储datetime。请编辑您的问题以在Events 处包含 JSON 的 sn-p(作为文本,请不要截图)。您可以通过单击Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。
  • 我添加了sn-p。谢谢
  • 这并不足以让我们确定。我将在下面写下我的最佳猜测答案,但请确保我们看到 Events 节点及其一些子节点(至少包括相关属性)。

标签: android firebase firebase-realtime-database


【解决方案1】:

Firebase 实时数据库查询遵循两步流程:

  1. 您在给定属性 (orderByChild)、值 (orderByValue) 或其键 (orderByKey) 上的某个位置下对子节点进行排序。

  2. 使用startAt()endAt()equalTo()limitToFirst()limitToLast() 告诉数据库要返回子节点的哪个切片。

在您的情况下,您需要 startAt() 类似:

long time = System.currentTimeMillis();

Query query = FirebaseDatabase.getInstance()
        .getReference()
        .child("Events")
        .orderByChild("datetime");
        .startAt(time + 1)

这里的time + 1 确保返回的结果当前时间之后。

【讨论】:

  • 完美解释,我现在明白了。非常感谢。
猜你喜欢
  • 2019-11-02
  • 2023-04-09
  • 1970-01-01
  • 2019-11-01
  • 2013-08-16
  • 2016-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多