Android 如何将值与Firebase实时数据库的子级进行比较?
我想将一个值与Firebase实时数据库的子项进行比较,但我不知道如何做。我的数据库的结构是: 这是我写的代码:Android 如何将值与Firebase实时数据库的子级进行比较?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想将一个值与Firebase实时数据库的子项进行比较,但我不知道如何做。我的数据库的结构是: 这是我写的代码: email = loadPreferences(); mAuth = FirebaseAuth.getInstance(); FirebaseDatabase database = FirebaseDatabase.getInstance(); final DatabaseReference myRef = database.getReference().chil
email = loadPreferences();
mAuth = FirebaseAuth.getInstance();
FirebaseDatabase database = FirebaseDatabase.getInstance();
final DatabaseReference myRef = database.getReference().child("users");
myRef.orderByChild("email").equalTo(email).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.getValue() != null) {
//loop through the keys
for(DataSnapshot datasnap : snapshot.getChildren()) {
if(!email.equalsIgnoreCase("")) {
myRef.child("users").child("email").child("address").setValue(getAddress());
}
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
我尝试使用调试器,但当调试器到达“orderByChild()”时,它会跳过所有内容并跳到末尾。有人能帮我吗?提前感谢数据是从Firebase异步加载的,因为它需要从云端加载。Firebase不会为用户阻止应用程序,而是在后台加载数据,并让主代码继续运行,这就是您在逐步完成代码时看到的情况 不要单步执行代码,而是在
onDataChange
内的第一行上放置一个断点,然后让代码运行。然后,当数据可用时,调试器将命中断点,您可以继续调试
您还应该实现onCancelled
,因为您现在忽略了可能的问题。该方法至少应为:
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
非常感谢您,现在我看到调试器并没有跳过指令,我按照您的建议添加了onCancelled实现。如果我的用户模型没有像address这样的属性,那么我添加它会更好,还是可以像我发布的那样直接添加呢?我在上面的回答中试图解决您的问题中最具体(也是最常见)的问题。如果我的答案有用,请单击向上投票按钮(▲) 如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就知道你已经得到了(足够的)帮助。另外,如果你还有更多问题,我建议你为此打开一个新的帖子。是的,我刚刚做了,再次非常感谢。