java - Android Firebase - 如何将 DatabaseReference 设置为为所有用户生成的推送 key ?

标签 java android firebase firebase-realtime-database

Firebase database structure here

例如,我现在的引用是

private FirebaseDatabase database;
private DatabaseReference reference;

database = FirebaseDatabase.getInstance();
reference = database.getReference("users");

我有一个 ChildEventListener 来监听子“subject”和“time”的修改、添加或删除,但它仅在“subject”和“time”是用户的直接子级时才有效,而不是在另一个 child 。

对于所有用户,我将如何修改我的数据库引用以查找“subject”和“time”,它们是 push key 下的子项,而 push key 是子“requests”下的?

最佳答案

试试这个:

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String useruid=user.getUid();
DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("user").child(useruid).child("requests");
ref.addChildEventListener(new ChildEventListener() {

    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
        String subject=dataSnapshot.child("subject").getValue().toString();
        String time=dataSnapshot.child("time").getValue().toString();

    }

    @Override
    public void onChildChanged(DataSnapshot dataSnapshot, String s) {

    }

    @Override
    public void onChildRemoved(DataSnapshot dataSnapshot) {

    }

    @Override
    public void onChildMoved(DataSnapshot dataSnapshot, String s) {


    @Override
    public void onCancelled(DatabaseError databaseError) {

    }

  };

这样您就可以访问/检索每个用户的主题和头衔。

关于java - Android Firebase - 如何将 DatabaseReference 设置为为所有用户生成的推送 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48857098/

相关文章:

java - SOAP 服务中不可见或隐藏的 XML 元素

java - 如何最好地在 Spring Integration 中实现 DynamicPoller

java - 如何获取当前前台Activity的包名?

swift - Snapshot.value 在 setValueForKeys 上崩溃

swift - 在 swift 中首先运行第一个函数后调用的函数

java - HashSet 和 HashMap 在 Java 中是如何工作的?

android - 设备上的 Eclipse Android 运行应用程序。什么都没发生

android - 这个 Activity 已经有一个由窗口装饰提供的操作栏

swift - 如何刷新 TableView 以使索引也更新?

java - Oracle getConnection 慢