java - 在firebase android中使用子键获取父名
问题描述
我正在尝试通过在 android studio 中使用子键“UID”来获取父名称“170002001”。请帮忙。提前致谢 :)
private void getdata(){
DatabaseReference reference;
reference = FirebaseDatabase.getInstance().getReference();
reference.orderByChild("UID").equalTo(uid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
keys = childSnapshot.getKey();
status.setText(keys);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
编辑:除“170002001”外,我能够检索所有父名称。:(
解决方案
把它放在你的onDataChange(DataSnapshot dataSnapshot)
听众里面
String parent = dataSnapshot.getKey();
由于 firebase 将为此管理可能的父键列表,请执行此操作
DatabaseReference reference;
reference = FirebaseDatabase.getInstance.getReference();
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
String parent = childSnapshot.getKey();
Log.i(TAG,parent);
}
}
请注意,此处的引用将是您的"170002001"
密钥上方的节点,它是所有这些密钥的父节点
编辑:如果您想获取每个节点内的所有 UID,请执行此操作
创建一个 POJO 类来保存该用户 ID
public class UserPojo {
private String UID;
public UserPojo(String UID) {
this.UID = UID;
}
public UserPojo() {
}
public String getUID() {
return UID;
}
public void setUID(String UID) {
this.UID = UID;
}
}
然后像上面一样做
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) {
String parent = childSnapshot.getKey();
UserPojo user = childSnapshot.getValue(UserPojo.class);
//get your User ID
String user = user.getUID();
Log.i(TAG,parent);
}
}
推荐阅读
- visual-studio-2017 - 如果我已经登录,为什么我的 Visual Studio 2017 许可证会过期?
- visual-studio - 从 NuGet 获取程序集时无法解析它们
- node.js - api 服务器节点中的多个承诺返回 null
- python-3.x - Python3 和 Django2 中的日期时间对象不一致
- tensorflow - 我正在尝试让 TensorBoard 运行。我哪里做错了?
- dart - 在 Flutter 中以编程方式展开 ExpansionTile
- php - PHP - 没有考虑 doc_root 值
- react-native - 使用单选按钮反应原生 FlatList
- php - PHP 5.6:ArrayAccess:函数 isset 调用 offsetGet 并导致未定义索引通知
- c# - C# 将列表添加到 Oracle 用户定义类型