在我的解决方案中,我从Windows表单应用程序中保存数据。没有问题。我可以在我的Android应用程序中列出它们。在这一点上,我试图获得更新数据的关键值,但总是得到null。
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myReference = database.getReference();
Query myTopPostsQuery = myReference.child("DURUSLAR").orderByChild("kayitid").equalTo("1298843637");
myTopPostsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren())
{
//Childadi =postSnapshot.getKey().toString();
String anahtar=postSnapshot.getKey().toString();
Toast.makeText(getApplicationContext(),anahtar,Toast.LENGTH_LONG);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
你能帮帮我吗?
答案 0 :(得分:0)
当您在Firebase数据库中的某个位置执行查询时,它将搜索您在该位置下的每个子项中订购/过滤的属性。由于您在/DURUSLAR
中进行查询,因此Firebase会查找/DURUSLAR/{something}/kayitid
。这样的属性不存在,因为您只有/DURUSLAR/{something}/{pushid}/kayitid
。
要解决此问题,您有两种选择:
第一个选项是在树的较低级别创建查询:
Query myTopPostsQuery = myReference.child("DURUSLAR/K6").orderByChild("kayitid").equalTo("1298843637");
现在查询正在寻找/DURUSLAR/{pushid}/kayitid
,它会起作用。
第二个选项是查询属性的已知路径:
Query myTopPostsQuery = myReference.child("DURUSLAR").orderByChild("K6/-KknsAR4_KFAeZ1HVXPW/kayitid").equalTo("1298843637");
这似乎不太可能你想要这个,但这种方法在其他情况下可能会有所帮助。通常,当您需要在路径中使用推送ID的此方法时,您将要查看{{3}}。
答案 1 :(得分:0)
您获得null的原因是您在错误的数据级别上执行orderByChild
。根据您的数据,您需要有一个孩子K4-> which has a unique_id_push_id -> kayitid
。因此,您需要遍历K4才能获得密钥kayitid
的1298843637。您可以按照this教程了解检索来自firebase的数据。
Query myTopPostsQuery = myReference.child("DURUSLAR").child("k6").orderByChild("kayitid").equalTo("1298843637");
myTopPostsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot: dataSnapshot.getChildren())
{
//Childadi =postSnapshot.getKey().toString();
String anahtar=postSnapshot.getKey().toString();
Toast.makeText(getApplicationContext(),anahtar,Toast.LENGTH_LONG);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});