【发布时间】:2018-07-27 20:55:58
【问题描述】:
我想知道 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)。
为什么会这样?有没有办法解决这个问题?
【问题讨论】:
-
你能显示整个查询,而不仅仅是过滤部分吗?您可能正在查询两个不同的集合 - 在这里无法分辨。此外,这里无法说出
language是什么,但您已将其硬编码到另一个中。 -
timestamp的数据类型是什么? -
@DougStevenson 这是号码 - 在 android 上很长
-
如果你不过滤,只是一个简单的
.get()ref,你能在云函数中获取数据吗?只是想确保查询是问题所在。 -
@JenPerson 我刚才查了一下,如果我关闭过滤器,查询会返回最后 15 个元素。
标签: android node.js firebase google-cloud-firestore