Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何按特定子值查询Firebase中的数据?_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android 如何按特定子值查询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

我从firebase开始,在数据查询方面遇到了问题。我有一个firebase数据库:

  "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调用。所以要解决这个问题,一个就足够了