我试图获取当前用户ID下存储的不同用户ID。我不确定如何获得具有随机用户ID的实际密钥。请参阅Firebase结构。
那么我如何获得一个随机用户ID的实际密钥?
到目前为止查看代码:
public void getAgencyAdminID(final String nodeName){
database.child("sand")
.child(nodeName)
.child("agencyAdmin")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
System.out.println(dataSnapshot.toString());
}
@Override
public void onCancelled(DatabaseError databaseError) { }
});
}
我感谢任何帮助,谢谢!
答案 0 :(得分:0)
您似乎知道此值的位置,因此您当前的代码几乎就在那里。您只需要对返回的DataSnapshot
的子项进行迭代,并使用DataSnapshot#getKey()
获取每个项的密钥:
public void getAgencyAdminID(final String nodeName){
database.child("sand")
.child(nodeName)
.child(userID)
.child("agencyAdmin")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChildren()) {
System.out.println(child.getKey());
}
}
@Override
public void onCancelled(DatabaseError databaseError) { }
});
}
您需要在DataSnapshot#getChildren()
上使用for
迭代循环,因为返回的DataSnapshot
将所有子节点都保存在agencyAdmin
节点。
答案 1 :(得分:0)
假设sand
节点是Firebase数据库的直接子节点,nodeName
指向ert
且userID
为rC6eW88yy3hhswdBrCT9cmd6rJB2
,那么密钥,请使用以下代码:
public void getAgencyAdminID(final String nodeName){
database.child("sand")
.child(nodeName)
.child(userID)
.child("agencyAdmin")
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
String key = child.getKey();
Log("TAG", key);
}
}
@Override
public void onCancelled(DatabaseError databaseError) { }
});
}
您需要循环的原因:当您对Firebase数据库执行查询时,可能会有多个结果。 因此快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果的列表。