通过分页检索Firebase中的聊天消息

时间:2018-06-21 05:44:24

标签: ios swift firebase firebase-realtime-database real-time

我需要在分页中从Firebase查询数据库生存期聊天。 但是我未能在第二页中获得空返回的查询,如下所示。 任何人都知道如何查询分页中返回的消息。 示例:1个查询需要10(1-10)行,第一页当前页=1。第二页我需要查询(11-20)行,依此类推。

我有如下所示的firebase对象,我需要通过分页进行查询。 现在,我已经存储了上次加载的聊天消息对象,并使用了上次加载的聊天消息日期时间来加载下一个分页列表。

我的对象结构如下

chats:{
              requestUser1:{
                   acceptUser2: {
                     -LWlpAv3RBfJ8Iu6D86 :{
                         Messages:{
                            -LWlpHlV7aXCZweRJDnQ: {
                                body: "hi",                                    
                                is_read: false,
                                timestamp: 1528770669          
                         }
                     }
                   }
              },
              requestUser3:{
                   acceptUser4: {
                     -LRlpAv3RBfJ8Iu6S86 :{
                         Messages:{
                            -LRlpHlV7aXCZweRJDnQ: {
                                body: "hi, nice to meet you",                                    
                                is_read: false,
                                timestamp: 1528770721          
                         }
                     }
                   }
              },
          }
  

var pageSize = 10

     

var lastMessageObject:Message!

     

var currentPage = 1

当前示例我要在第二页查询

  

currentPage = 2

     

lastMessageObject =消息(最后存储的消息)

我将如下查询firebase数据库

  

Database.database()。reference()。child(currentChatRoomAdd)                       .child(“消息”)                       .queryOrdered(byChild:“ timestamp”)                       .queryLimited(toLast:UInt(pageSize))                       .queryEnding(atValue:lastMessageObject.timestamp)                       .observe(.childAdded,其中:{(结果)位于

//Code the retrieve message 
     

})

我无法获取数据,也无法在观察中返回任何数据,那么在出错时会发生什么?

当[Firebase / Database] [I-RDB034028]使用未指定的索引时,会出现错误。您的数据将在客户端上下载并过滤。考虑在/ chats / requestUser1 / acceptUser2 / -LWlpAv3RBfJ8Iu6D86 / Messages的安全规则中添加“ .indexOn”:“ timestamp”以获得更好的性能

0 个答案:

没有答案