Android Firebase获得其他用户';来自实时数据库的uid
有没有办法从实时数据库中获取另一个用户的uid?我想从数据库中同时获得两个具有不同UID的名称对象 Json文件:Android Firebase获得其他用户';来自实时数据库的uid,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,有没有办法从实时数据库中获取另一个用户的uid?我想从数据库中同时获得两个具有不同UID的名称对象 Json文件: "Users" : { "PnZdR1Ily5R5R58FYFVEuWN0Q855" : { "-Kwwceeevvvvvttvv" : { "name" : "abc" }, "-Kccrr325gdfgdfFg" : { "name" : "abc" } }, "MeTsW4SsW6e8hG
"Users" : {
"PnZdR1Ily5R5R58FYFVEuWN0Q855" : {
"-Kwwceeevvvvvttvv" : {
"name" : "abc"
},
"-Kccrr325gdfgdfFg" : {
"name" : "abc"
}
},
"MeTsW4SsW6e8hGrsFfVUuNNaQ3cj" : {
"-Kfvr345345354555" : {
"name" : "zxc"
},
"-Kbfhf56464646646" : {
"name" : "zxc"
}
}
}
这是我的代码:
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
User details = dataSnapshot.getValue(User.class);
mName = details.name;
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.w(TAG, "getUser:onCancelled", databaseError.toException());
}
};
mDatabase.child("Users").child($uid).addValueEventListener(postListener);
这是我一直关注的部分,如何同时获取两个UID?如果要检索随机键,则应使用
addChildEventValueListener
,因为它会逐个提供用户节点的子节点
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference mref = firebaseDatabase.getReference();
mref.child("Users").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
if (dataSnapshot.hasChildren()) {
User details = dataSnapshot.getValue(User.class);
}
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我很难理解你的问题。你能展示一些实际的JSON(作为文本,你可以从Firebase控制台导出)和显示你正在尝试做什么(以及你被困在哪里)的代码吗?@FrankvanPuffelen谢谢你的回答,我已经更新了这个问题。你似乎在寻找一个类似于SQLs
的查询,id在[id1,id2]
中。Firebase没有这样的机制,因此您必须依次加载每个子项。这并不比在sql查询中加载它们慢很多,因为。谢谢回复。也许我还不够清楚,很抱歉,我已经更新了json文件,应该是这样的,一个uid获得了不同的唯一密钥。这是一个正确的答案,但不是完整的答案:使用此代码,而不是像您那样使用ValueEventListener
。但是使用limitToFirst(2)
更新您的ref
,以仅获取两个不同的uid。您还应该向查询引用添加更多参数。@AmiHollander感谢您的回复,但它不起作用,我仍然需要两个子项($uid)来获取由唯一键指定的数据。