Firebase实时数据库分页取最新数据:limit函数报错问题排查
Firebase实时数据库分页获取最新数据解决方案
解决.limit is not a function报错
Firebase Realtime Database没有.limit()方法,限制返回条数需要用limitToFirst()或limitToLast(),这是你报错的核心原因。
获取最新25条数据的正确写法
你通过-1*new Date().getTime()将最新数据的posted值设为最小的负数,此时按posted升序排列后,前25条就是最新的25条,代码如下:
this.props.database.ref().child("你的目标节点路径") .orderByChild("posted") .limitToFirst(this.state.pagination) // pagination设为25
如果不想用负数时间戳,也可以直接存储正的时间戳,然后通过limitToLast()获取最新25条,写法更直观:
// 存储时改为:posted: new Date().getTime() this.props.database.ref().child("你的目标节点路径") .orderByChild("posted") .limitToLast(25)
分页加载更早的数据
首次获取25条后,记录下这批数据中最后一条的posted值(记为lastPosted)。下一页加载时,通过endAt()排除已获取的最后一条,再取前25条,就能拿到25-50区间的数据:
this.props.database.ref().child("你的目标节点路径") .orderByChild("posted") .endAt(lastPosted - 1) // 减1避免重复获取最后一条数据 .limitToFirst(this.state.pagination)
以此类推,每次分页都用上一批数据的最后一条posted值作为endAt的参数,就能实现连续的分页加载。
内容的提问来源于stack exchange,提问作者Charmalade
相关产品推荐
相关产品推荐

