Android 我能';无法获取firebase数据库的密钥
在我的解决方案中,我保存来自Windows窗体应用程序的数据。没问题。我可以在我的android应用程序中列出它们。在这一点上,我试图获取键值来更新数据,但总是得到nullAndroid 我能';无法获取firebase数据库的密钥,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,在我的解决方案中,我保存来自Windows窗体应用程序的数据。没问题。我可以在我的android应用程序中列出它们。在这一点上,我试图获取键值来更新数据,但总是得到null FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myReference = database.getReference(); Query myTopPostsQuery = myReferen
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) {
}
});
您能帮助我吗?当您在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的这种方法时,您会希望查看。获取null的原因是您在错误的数据级别上执行了
orderByChild
。根据您的数据,您需要有一个子K4>,该子项具有唯一的\u id\u push\u id->kayitid
。因此,您需要遍历K4以获得键kayitid
的1298843637。您可以按照教程了解从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) {
}
});
谢谢你,先生。我知道我需要更多的练习。