我试图检查登录的用户ID是否与当前用户ID匹配,以验证用户类型。
我使用的是exists()方法,但似乎无法正常工作。见代码:
private String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
private DatabaseReference database = FirebaseDatabase.getInstance().getReference().child("basenode");
database.child("sand").child("administratorCountry").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.child(userID).exists()) {
System.out.println("THIS IS THE OUTPUT: "+ "TRUE");
}else{
System.out.println("THIS IS THE OUTPUT: "+ "FALSE");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
请参阅Firebase结构:
我将不胜感激任何帮助!谢谢!
已更新
每个用户ID中的数据:
答案 0 :(得分:0)
我建议将侦听器直接附加到userID
节点,然后检查返回的数据是否存在:
private String userID = FirebaseAuth.getInstance().getCurrentUser().getUid();
private DatabaseReference database = FirebaseDatabase.getInstance().getReference();
database.child("sand")
.child("administratorCountry")
.child(userID) // Create a reference to the child node directly
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This callback will fire even if the node doesn't exist, so now check for existence
if (dataSnapshot.exists()) {
System.out.println("The node exists.");
} else {
System.out.println("The node does not exist.");
}
}
@Override
public void onCancelled(DatabaseError databaseError) { }
});
您不需要指定child("basenode")
,因为getReference()
方法直接指向数据库的根目录,因此您可以从child("basenode")
中删除database
变量。