我正在尝试使用Firebase Fireresstart()和限制()查询方法实现分页系统,第一个查询返回成功,但第二个查询返回空快照。
>
fun getNextPage(paginationSize : Long) : TrendingRepository {
database.collection("app")
.document("data")
.collection("offers")
.orderBy("discount")
.startAfter(lastVisible)
.limit(paginationSize)
.get().addOnSuccessListener { snapshot ->
Log.i("TrendingRepo", "pagination size : $paginationSize")
val newList = ArrayList<Offer>()
if (!snapshot.isEmpty) {
lastVisible = snapshot.documents[snapshot.size() - 1]
}
for (document in snapshot) {
val item = document.toObject(Offer::class.java)
newList.add(item)
Log.i("TrendingRepo", "at position: ${newList.indexOf(item)} got item: ${item.id}")
}
successListener?.onSuccess(newList)
}.addOnFailureListener {
failureListener?.onFailure(it.localizedMessage)
}
return this
}
这是我的日志:
TrendingRepo:分页大小:48//第一次尝试
TrendingRepo:在位置:0获得项目:0pqcRzSd06WWlNNmcolu
趋势回购:在位置:1得到项目:7I7WISYT5YEBWNWN08BQJ
...
TrendingRepo:在位置: 45得到项目: 4B3dEPhFLqhKrYpLWye7
TrendingRepo:在位置: 46得到项目: 4ddLqiGe8ReXW8SKq2Q6
TrendingRepo:at位置:47获得项目:4UVNNGNAMKVGUHCV01N
TrendingRepo:分页大小:48//第二次尝试
//不再记录,数据为空
可能存在项目小于分页大小的情况,因此下面是代码
private var lastVisible: DocumentSnapshot? = null
private var isLastPage: Boolean = false
private var isDocEmpty: Boolean = false
var ref: Task<QuerySnapshot>? = null
if (lastVisible != null) {
ref = database.collection("app").document("data").collection("offers").orderBy("discount").startAfter(lastVisible).limit(paginationSize).get()
} else {
ref = database.collection("app").document("data").collection("offers").orderBy("discount").limit(paginationSize).get()
}
ref.addOnSuccessListener { documents ->
hideProgress()
isDocEmpty = documents.isEmpty
if (!isDocEmpty) {
lastVisible = documents.last()
isLastPage = documents.size() < paginationSize
}
isLoading = false
}
.addOnFailureListener { exception ->
Log.w("TAG", "Error getting documents: ", exception)
isLoading = false
hideProgress()
}
我希望这对你有帮助。
在我的Android项目中,我使用Room库来处理SQLite数据库。我使用我的数据库来保存国家电话代码。我的数据库预加载了两个国家(watch大众数据库与国家代码(道:电话代码道)功能); 国家代码实体 DAO接口 在我的应用程序中,我按顺序选择国家代码(观察函数selectCountryCodeByOrder(order:Int):Int)。我在异步{}协同例程中异步调用此函数。但我有一个相当
问题内容: 我正在使用MySQL存储视频游戏数据。我有用于标题,平台,标签,徽章,评论,开发人员,出版商等的表… 当某人正在观看游戏时,最好有一个查询来返回与游戏相关的所有数据,还是最好使用多个查询?直观地,由于我们具有评论,将它们包括在同一查询中似乎毫无意义,因为它们需要分页。但是在其他情况下,我不确定是否要分解查询或使用两个查询… 我有点担心性能,因为我现在加入游戏下表:开发人员,发行者,元标
问题内容: 有没有一种方法可以使Oracle查询的行为类似于包含MySQLlimit子句的行为? 在MySQL中,我可以这样做: 以获得第21到30行(跳过前20行,给出下10行)。这些行是在后面选择的,因此它实际上按字母顺序从第20个名称开始。 在Oracle中,人们唯一提到的是rownum伪列,但是它在之前 被评估,这意味着: 将返回一个随机的十行,按名称排序,这通常不是我想要的。它还不允许指
我正在尝试从我的应用打开Gmail(点击按钮)。我只在Android11中面临这个问题。这不是打开Gmail。在本例中,QueryInputActivities返回空列表。 请帮助我解决android 11的这个问题。下面是我正在使用的代码。。
问题内容: 我负责处理的应用程序之一是每隔x秒检查一次Oracle DB表,以查看是否有新数据要处理(其他实时应用程序正在填充该数据)。 我们新的客户业务流程迫使我们的实时性在同一时间(比如说10000)同时每天填充几次记录来填充该表。下次我的应用程序检查是否有任何要处理的内容时,遇到10 000条记录并尝试对其进行处理。 它的设计不是很好,而且扩展性还不够好。快速解决方案是限制该应用程序从Ora
我正在努力学习GraphQL( 我只得到一级字段,比如: 以下是我的模式: 我的解析器: 知道我做错了什么吗?