0
我正在開發具有以下火力地堡數據庫表中的Android應用:火力地堡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」正確獲取我想要的對象。它也可以工作,如果,如果我給定值「xUdkl」到「userId_articleId」如果「userId_articleId」數據庫是值「xUdkl」是這樣的:
.orderByChild("xUdkl").add....
但它不能正常工作,如果我如果數據庫中的「userId_articleId」是「xUdklm4VMFa9F」,則將值「xUdklm4VMFa9F」設置爲「userId_articleId」。
orderByChild("xUdklm4VMFa9F").add...
我不知道爲什麼。它與String的長度有關,還是它只是firebase中的一個bug?任何幫助將不勝感激。
好的,謝謝。但它太奇怪了...... –
我們無法知道'firebaseUser.getUid()+ article.id'是什麼。你能用硬編碼值重現問題嗎?如果是這樣,請更新問題以反映這一點。 –
另請注意,「它無法工作」對問題的描述過於模糊。如果代碼只是打印一個值,我經常會發現它最簡單。然後告訴我們代碼打印的內容,以及您期望它打印的內容。 –