【问题标题】:How to get Firebase database saved data according to date?如何根据日期获取 Firebase 数据库保存的数据?
【发布时间】:2019-12-08 15:22:46
【问题描述】:

我根据自动创建的 ID 将数据存储在 Firebase 上。但是现在我只需要从数据库中获取今天添加的数据并用它填充一个回收视图。

【问题讨论】:

  • 你应该存储那个日期时间
  • 到目前为止你有什么尝试?
  • 您的数据库不包含有关节点创建时间的信息,因此很难查询。除非您想解析由push() 生成的密钥,否则我强烈建议您不要这样做。相反:将日期/时间戳以可查询的格式存储到每个节点中,然后使用它进行查询。

标签: android firebase firebase-realtime-database android-recyclerview data-retrieval


【解决方案1】:

我假设分支users 存储用户信息。您可以将子事件侦听器添加到分支users 以在您的活动或片段中获取用户,如下所示。

private ArrayList<User> userArray = new ArrayList<>();
private DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference().getChild("users");

ChildEventListener childEventListener = new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String previousChildName) {
        User user = dataSnapshot.getValue(User.class);
        if(user.getDate().equals(today)){
           userArray .add(user);
        }
    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String previousChildName) {
       //do somethings
    }

    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {
       //...
    }

    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String previousChildName) {
       //...
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {
       //...
    }
};

在活动/片段方法中,将监听器添加到您的引用中:

ref.addChildEventListener(childEventListener);

数组将填充来自分支users 的数据。 有关如何在 firebase 中使用列表的更多信息:https://firebase.google.com/docs/database/android/lists-of-data

【讨论】:

    【解决方案2】:
    1. 开始存储日期时间(https://firebase.google.com/docs/reference/android/com/google/firebase/Timestamp

    2. Firebase 数据库没有查询功能,您应该考虑使用 Firestore。

    3. 将记录存储在数据时间>id>对象等组中。因此,当您想获取特定日期的数据时,您需要做的就是 ref('desireddatetime')

    4. 蛮力(不推荐)一次性获取整个快照并在本地过滤日期

    注意 - 调用 push() 将为您生成一个 uid 密钥。 相反,您使用 child(),您可以自己确定它们的键/路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 2019-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多