首页 > 解决方案 > 如何从firebase数据库的内部节点读取值?

问题描述

我在firebase中为一个android应用程序创建了一个实时数据库。数据库的内容是这样的

"Users" : {
    "fqwtFeCgp3fIvYay9PRppUyHv5C3" : {
      "email" : "ruthvikbr24@gmail.com",
      "post" : "manager",
      "name" : "eurhvik",
      "password" : "password",
      "phone" : "1234567890"
    }
}

代码 :

database = FirebaseDatabase.getInstance(); 
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid(); 
userData = database.getReference("Users").child(userId); 
userData.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
        String post = dataSnapshot.child("gender").getValue(String.class); 
        Toast.makeText(getApplicationContext(),""+post,Toast.LENGTH_SHORT).show(); 
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});

根据post功能中的价值会有所不同。当用户通过 firebase Auth 注册应用程序时,它的一份副本连同 uid 以上述格式存储在数据库中。如何检索post特定 uid 的值?

标签: javaandroidfirebasefirebase-realtime-database

解决方案


要获取帖子,请执行以下操作:

String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference dbRef = FirebaseDatabase.getInstance().getReference("Users").child(userId);
dbRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
           String post = dataSnapshot.child("post").getValue(String.class);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

首先添加对节点的引用,然后您可以在附加侦听器后userId检索。post


推荐阅读