我需要在分页中从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”以获得更好的性能