理想情况下,我们需要更多地了解您正在尝试做什么。
应用程序的用户是否可以访问所有这些用户ID?还是应该只能访问自己的?他们是管理员,还是最终用户等?
当你说“一个获取用户ID的函数”时,你的意思是你提供了这个ID,并且该函数返回该用户ID中该人的名字?另外,在这种情况下,您正在对用户标识进行硬编码。这仅仅是为了测试吗? 您是否在使用Firebase Auth进行用户注册等,或者没有注册?
很难在不知道更多的情况下回答这个问题,但让我们假设用户从Firebase获取任何字符串的最新消息。 (如果使用Firebase身份验证,则DatabaseReference略有不同)
因此,您需要一个映射到树中正确节点的DatabaseReference。在你的例子中,用户将无法访问用户1和2.(这是你想要的吗?)。在我的示例中,他们可以访问0,1和2.
现在,您只需将侦听器添加到您正在查找的数据库引用的子级。在下面的情况下,我们要求具有“0”键的值。
public void checkFunction() {
private FirebaseDatabase mRef;
//String variable to store whatever value we're looking for
String mName = "";
//Our reference knows only "Users" and all of its children
mRef = FirebaseDatabase.getInstance().getReference().child("Users");
//Adding a listener for the value associated with the user key "0"
mRef.child("0").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
//In this case, "shalom" will be stored in mName
mName = (String) snapshot.getValue();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
希望这可以让我们更容易理解发生了什么。
在不知情的情况下很难回答这个问题,但我怀疑你需要重新考虑数据库的结构。也许更符合下面的结构,其中RandomUserIdsHere是在使用Firebase身份验证注册时分配给每个用户的自动生成的uids。
todofirebaseapp-4c83d{
"Users" :{
"*RandomUserIdsHere*" : {
"FirstName" : "Joe",
"LastName" : "Bloggs",
"Age" : "30"
}
"*AnotherRandomUserIdsHere*" : {
"FirstName" : "Jane",
"LastName" : "Doe",
"Age" : "21"
}
"*AnotherRandomUserIdsHere*" : {
"FirstName" : "John",
"LastName" : "Doe",
"Age" : "47"
}
}
}
在这种情况下,DatabaseReference看起来有点不同。我们会像这样通过uid。
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid;
mRef = FirebaseDatabase.getInstance().getReference("todofirebaseapp-4c83d").child("Users").child(uid);
编辑:改正我无法SPEL。
请将您的代码发送 –
请让我们知道您尝试了什么 – FaisalAhmed
哪一个是用户ID? –