首页 > 解决方案 > Firestore order by 和 limit 在 kotlin 中不起作用

问题描述

我有以下 Firestore 设置:

-Root
 - Queue
   - item1
      - time : 20
   - item2
     - time : 1
   - 2000 more items, with a random time value

我想要的是显示 40 个项目,时间最短,所以我在 kotlin 中执行以下操作:

val ref = firestore.collection("Queue")
orderBy?.let{
  ref.orderBy(it)
}
limit?.let{
  ref.limit(it)
}
return ref.get().get().toObjects(Queue::class.java)

它实际上完全忽略了我的 order by 和 limit 语句。并返回队列集合中的所有项目,我做错了什么。

标签: javakotlingoogle-cloud-firestore

解决方案


这里的文档:

https://firebase.google.com/docs/reference/android/com/google/firebase/firestore/Query

说 orderBy 和 limit 方法返回一个新的查询对象,所以也许你应该尝试

val ref = firestore.collection("Queue").orderBy("time").limit(40)

根据对您的问题的更新,您可以创建一个函数,根据 orderBy 和 limit 查询修饰符是否存在来返回您想要的查询。您必须将该查询对象设为 var 才能使其可变。


推荐阅读