Android 如何按特定子值查询Firebase中的数据?
我从firebase开始,在数据查询方面遇到了问题。我有一个firebase数据库:Android 如何按特定子值查询Firebase中的数据?,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我从firebase开始,在数据查询方面遇到了问题。我有一个firebase数据库: "Conversations" : { "-L9LJQiFKqGlNKKFEyvd" : { "-L9LJQiHrp1rU1pblNG_" : { "messageText" : "Hi there", "postTime" : 1522940321427, "senderId" : "GSJMlFA3pYMjYCfY6BA0AEyva
"Conversations" : {
"-L9LJQiFKqGlNKKFEyvd" : {
"-L9LJQiHrp1rU1pblNG_" : {
"messageText" : "Hi there",
"postTime" : 1522940321427,
"senderId" : "GSJMlFA3pYMjYCfY6BA0AEyva9u2",
"senderNickname" : "q"
},
"-L9LZ0O2rXHe-eh2iRgB" : {
"messageText" : "f",
"postTime" : 1522944447238,
"senderId" : "GSJMlFA3pYMjYCfY6BA0AEyva9u2",
"senderNickname" : "q"
},
"-L9LZ7uF9TPb4VZ-wJEO" : {
"messageText" : "vvvv",
"postTime" : 1522944478035,
"senderId" : "GSJMlFA3pYMjYCfY6BA0AEyva9u2",
"senderNickname" : "q"
}
}
},
我想显示对那些push()对象的get引用,这些对象的“postTime”值高于某些特定值,例如:15229447230。
我试过:
mConversationId = "-L9LJQiFKqGlNKKFEyvd"
mLeaveTime = 1522944447230;
mUserConversationsReference = mFirebaseDatabase.getReference().child("Conversations");
mUserConversationsMessagesReference = mUserConversationsReference.child(mConversationId);
mLastMessageQuery = mUserConversationsMessagesReference.orderByChild("postTime").orderByValue().startAt(mLeaveTime);
但我得到:
java.lang.IllegalArgumentException:不能组合多个orderBy
电话
因此,必须有另一种方法来解决这个问题。如有任何建议,我将不胜感激。`要解决此问题,请使用以下代码行:
String mConversationId = "-L9LJQiFKqGlNKKFEyvd"
long mLeaveTime = 1522944447230;
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference mConversationIdRef = rootRef.child("Conversations").child(mConversationId);
Query query = mConversationIdRef.orderByChild("postTime").startAt(mLeaveTime);
.orderByValue()
与您的查询无关。请注意,Firebase不允许您使用多个orderBy调用。所以要解决这个问题,一个就足够了