我正在尝试从登录的当前用户的Firebase中获取channel_id
的值。以下是数据库的图像:
我从下面给出的代码中获得null
的值。
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference dbref =
FirebaseDatabase.getInstance().getReference("Users/Clients");
dbref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String val =String.valueOf(dataSnapshot.getValue());
Toast.makeText(getBaseContext(),""+val,Toast.LENGTH_LONG).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
答案 0 :(得分:0)
尝试这个答案
FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId=user.getUid();
DatabaseReference dbref =
FirebaseDatabase.getInstance().getReference("Users/Clients").child(userId);
dbref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String channel_Id=dataSnapshot.child("channel_id").getValue().toString();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
答案 1 :(得分:0)
要获取当前的用户信息,请尝试以下操作:
FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId=user.getUid();
DatabaseReference dbref = FirebaseDatabase.getInstance().getReference("Users/Clients").child(userId);
dbref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String names=dataSnapshot.child("name").getValue().toString();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
在这里检索当前的用户ID,然后将其添加到路径并检索数据。
答案 2 :(得分:0)
@Peter Haddad的答案将非常有用,还有一种替代方法是使用以下方法将侦听器直接附加到name
属性:
FirebaseDatabase database = FirebaseDatabase.getInstance();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId=user.getUid();
DatabaseReference dbref = FirebaseDatabase.getInstance().getReference("Users/Clients/"+userId+"/name");
dbref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String names=dataSnapshot.getValue(String.class);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
最后一个示例的优势在于,即使稍后在name
下添加更多子属性,它也仅检索userId
属性。这种方法将节省您的带宽。