私は、次のFirebaseデータベーステーブルとAndroidアプリを開発しています動作しませんでした:Firebase equalTo()が正しく
"fav" : {
"-Ktf0tmShJ48-oH76Or3" : {
"article" : {},
"articleId" : "1005",
"id" : 1505034214723,
"userId" : "xUdklm4VMFa9FJvA15XvlIkYKFA3",
"userId_articleId" : "xUdklm4VMFa9FJvA15XvlIkYKFA31005"
},
"-Ktf13BfglsB4sFhHv-P" : {
"article" : {},
"articleId" : "1001",
"id" : 1505034257363,
"userId" : "xUdklm4VMFa9FJvA15XvlIkYKFA3",
"userId_articleId" : "xUdklm4VMFa9FJvA15XvlIkYKFA31001"
}
}
私は、このような文字列「userId_articleId」で照会したい:
FirebaseDatabase.getInstance().getReference().child("fav").orderByChild("userId_articleId").equalTo(firebaseUser.getUid() + article.id)
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.exists()){
for (DataSnapshot data : dataSnapshot.getChildren()){
fav = data.getValue(Fav.class);
favKey = data.getKey();
starItem.setIcon(R.drawable.star);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i("fyales","The dataChanged");
}
});
}
しかし、私が望むオブジェクトを手に入れることができません。もっとも奇妙なことは、私が正しく「articleId」または「id」というキーで必要とするオブジェクトを取得できることです。
.orderByChild("xUdkl").add....
しかし、私ならば、それは動作しないことができます。また、私は「userId_articleId」に明確な値「xUdkl」を与える場合場合は、データベース内の「userId_articleIdは」このような値は「xUdkl」であれば働くことができますデータベースの「userId_articleId」がこのような「xUdklm4VMFa9F」である場合、値「xUdklm4VMFa9F」を「userId_articleId」に与えます。
orderByChild("xUdklm4VMFa9F").add...
理由はわかりません。文字列の長さに関連していますか、それとも火災基地のバグですか?どんな助けもありがとう。
ありがとうございます。しかし、それはとても奇妙です.... –
'firebaseUser.getUid()+ article.id'が何であるか知る方法がありません。ハードコードされた値で問題を再現できますか?もしそうなら、これを反映するために質問を更新してください。 –
また、 "それは動作しません"というのはあまりにも漠然とした説明です。私はしばしばコードがちょうど値を出力するならば、それが最も簡単だと分かります。次に、コードが何を印刷したのか、そしてそれを印刷するために何を期待しているのかを教えてください。 –