我想知道SDK之间的差异从何而来。 例如,我有一个新闻列表。我对其执行两个操作:刷新并下载第一个或下一个偏移量。 当我使用移动SDK时,我会调用它来刷新:
FirebaseFirestore.getInstance().collection("news")
.whereEqualTo("categories.finance", true)
.whereEqualTo("locale", "pl")
.orderBy("timestamp", Query.Direction.DESCENDING)
.limit(15)
.endAt(1518554580)
.get()
它将返回最新消息。但如果我在云函数上执行它:
admin.firestore().collection('news')
.where('categories.finance', '==', true)
.where('locale', '==', language)
.limit(15)
.orderBy('timestamp', 'desc')
.endAt(1518554580)
.get()
我得到一个空列表。 这同样适用于下载偏移量。查询与上面类似,但有一点不同 - 我使用的是 startAfter(1518554580)。
为什么会发生这种情况?有办法解决这个问题吗?
最佳答案
我知道为什么会发生这种情况。 由于某种原因,具有降序时间戳的复合索引适用于移动设备,但对于 Web,它在索引升序时工作。 因此,我必须为每个类别有两个索引。
关于android - Firebase Firestore - 移动 SDK 和 Web SDK 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48835402/