如何根据日期获取Firebase数据库保存的数据?

How to get Firebase database saved data according to date?

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

  1. 开始存储日期时间(https://firebase.google.com/docs/reference/android/com/google/firebase/Timestamp)

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

  3. 像datatime>id>object这样的分组存储记录。因此,当您想获取特定日期的数据时,您需要做的就是 ref('desireddatetime')

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

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

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

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) {
       //...
    }
};

在 activity/fragment 方法中,将侦听器添加到您的引用中:

ref.addChildEventListener(childEventListener);

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