[英]Android Firebase query with range (Above, Mid, Bottom)
我剛開始在Android中使用Firebase,並編寫了這樣的查詢。
messageSearchQuery = FirebaseDatabase.getInstance().getReference().child("Message")
.child(conversationID).limitToLast(INITIAL_MESSAGE_COUNT)
.orderByChild("timestamp").startAt(participant.joiningDate).endAt(endAt);
我只能給limitToFirst
, limitToLast
, startAt
, endAt
。 (我認為沒有中心)
我需要提供時間戳(例如10 am),我想在10 am之前查詢10條消息,在10 am之后查詢10條消息。 (但我不知道它什么時候開始,什么時候結束)。
編輯
我想做的就是這樣。
messageSearchQuery = FirebaseDatabase.getInstance().getReference().child("Message").
child(conversationID).
orderByChild("timestamp").equalTo(endAt).limitToFirst(INITIAL_MESSAGE_COUNT).limitToLast(INITIAL_MESSAGE_COUNT);
但是,如果這樣做,它會像這樣崩潰。
java.lang.IllegalArgumentException:無法在具有先前設置的限制的查詢上調用limitToLast!
我該怎么辦?
我在firebase中的數據是這樣的。
您可以通過組合startAt
和endAt
來選擇一個范圍,這兩種操作都針對您訂購的子級。 例如,如果您希望在某個日期的上午10點至晚上10點之間發送消息,則可以執行以下操作:
long timestampOf10am = ...;
long timestampOf10pm = ...;
messageSearchQuery = FirebaseDatabase.getInstance().getReference().child("Message")
.child(conversationID)
.orderByChild("timestamp").startAt(timestampOf10am).endAt(timestampOf10pm)
.limitToLast(INITIAL_MESSAGE_COUNT);
更新 :如果您需要在上午10點之前添加10個項目,並在上午10點之后添加10個項目,則需要觸發兩個查詢並在客戶端合並結果。
long timestampOf10am = ...;
beforeMessageSearchQuery = FirebaseDatabase.getInstance().getReference().child("Message")
.child(conversationID)
.orderByChild("timestamp").startAt(timestampOf10am)
.limitToFirst(INITIAL_MESSAGE_COUNT);
afterMessageSearchQuery = FirebaseDatabase.getInstance().getReference().child("Message")
.child(conversationID)
.orderByChild("timestamp").endAt(timestampOf10am)
.limitToLast(INITIAL_MESSAGE_COUNT);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.