我一直在研究Firebase Firestore,以及比其他聊天应用程序更好的示例项目。
我怎么想它会起作用:
std::vector<int> v{1,2,3,5,9,20,3};
// create a min heap
std::make_heap(v.begin(), v.end(), std::greater<int>{});
// set 4th element to 35 in O(log n)
set_heap_element(v.begin(), v.end(), v.begin() + 3, 35, std::greater<int>{});
// is the min-heap property satisfied?
assert(std::is_heap(v.begin(), v.end(), std::greater<int>{}));
,将消息添加到回收者视图oldestTimestamp
并获得20条消息时,这些消息早于当前最早的一条消息更新fecthMore
,将消息添加到回收者视图
在阅读order-limit-data和query-cursors之后,我想出了这些解决方案,可惜它们都不起作用。
我使用了oldestTimestamp
,但这返回了0条消息
在那之后,我尝试使用whereLessThanOrEqualTo("timestamp", previousOldestMessageTimestamp)
与以前相同的结果
然后我尝试将查询简化为.orderBy("timestamp", Query.Direction.DESCENDING) .endBefore(previousOldestMessageTimestamp)
,该查询返回了一些消息,但列表中是整个会话中最早的消息
要使其正常运行(与每个聊天应用程序一样),我应该进行哪些更改?
您还能解释.orderBy("timestamp") .endBefore(previousOldestMessageTimestamp)
和whereLessThanOrEqualTo()
+ orderBy()
这里是一些上下文
endBefore()
答案 0 :(得分:1)
看起来开始/结束工作与实时数据库不同,因此需要更改
.orderBy("timestamp", Query.Direction.DESCENDING)
.endBefore(previousOldestMessageTimestamp)
到
.orderBy("timestamp", Query.Direction.DESCENDING)
.startAfter(previousOldestMessageTimestamp)
使其有效