如果您有子键,如何直接从root获取子节点的值

时间:2017-11-03 10:30:42

标签: android firebase firebase-realtime-database

我正在使用Android应用。

我创建了一个FireBase数据库,其中包含注册用户的信息。

正如您在图片中看到的,我为我的数据库中的用户创建了服装密钥,这些用户是身份验证部分中的用户User UID。当用户登录时,我得到User UID并在我的FireBase数据库中直接从根节点到该特定节点找到它的信息,该节点总是给我空值。

请帮助我。

如果您可以上传代码段,那将非常感激。

Database sample and location of problem

2 个答案:

答案 0 :(得分:1)

DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("teacher");

ref.orderByKey().equalto(currentuser.getUid()).addChildEventListener(new ChildEventListener() {
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
           String value=dataSnapshot.child("teacherName").getValue().toString();

      }
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
public void onCancelled(FirebaseError firebaseError) { }
});

引用您要查询的位置,然后执行addChildEventListener并在条件等于您获得的用户ID时进行查询。

FirebaseUser currentuser = FirebaseAuth.getInstance().getCurrentUser();

答案 1 :(得分:1)

要获取数据,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("teacher").child(uid);
ValueEventListener eventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String ImageUri = dataSnapshot.child("ImageUri").getValue(String.class);
        String teacherName = dataSnapshot.child("teacherName").getValue(String.class);
        String teacher_key = dataSnapshot.child("teacher_key").getValue(String.class);
        Log.d("TAG", ImageUri + "/" + teacherName + "/" + teacher_key);
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
uidRef.addListenerForSingleValueEvent(eventListener);

其中uid是您说您已经拥有的用户的ID。