我已经搜索了一段时间,但还没有找到这样的原因。
基本上,这返回集合中的一系列文档。
this.db.collection('people', ref => {
return ref.orderBy(name, 'asc')
.startAfter(null)
.limit(10)
})...
这返回一个空数组。
this.db.collection('people', ref => {
return ref.orderBy(name, 'desc')
.startAfter(null)
.limit(10)
})...
唯一的区别是Orderby设置为" DESC"。有人可以解释为什么会发生这种情况以及解决问题吗?预先感谢!
我相信问题是 startAfter(null)
。当您按升序排序时,零文档首先出现,然后是非零文档。有关确切的订单,请参阅有关值类型订购的Firebase文档。
当您按降序排序时,所有的空文档都将持续下去,因此null Docs以返回查询后,没有任何内容。
我建议删除startAfter(null)
,直到您有一个值。
如果有人对我的解决方案感兴趣,请箭头:
var lastDocumentSnapshot : DocumentSnapshot? = null;
if (url != null){
val query = this.getLastDocumentSnapshotAsync(url).await()
if (!query.isEmpty){
lastDocumentSnapshot = query.documents.distinct().first()
}
}
val query = firebaseDb.collection("urls")
.orderBy("name", sortDirection)
.limit(limit)
if (sortDirection == Query.Direction.ASCENDING)
query.startAfter(lastDocumentSnapshot)
else
query.endBefore(lastDocumentSnapshot)
return query.get().asDeferredAsync()
不要介意代码的其他部分。基本上,解决方案是使用endBefore
,如果排序降临。