我对大型数据库使用firebase,每个条目都使用自动密钥。为了得到,比如说,过去的十个条目,我可以使用:在swift中查询firebase数据库的中间部分
ref.queryLimitedToLast(10).observeSingleEventOfType(.Value, withBlock: { snapshot in
for item in snapshot.children {
//do some code to each item
}
})
但是,我不能为我的生活工作如何再拿到之前的十个条目。例如。如果数据库有100个条目,我的代码将返回90-100,但是我怎样才能得到条目80-90(例如,没有查询过去的20个并抛弃一半,因为它似乎效率低下)?
编辑: 我结束了使用
ref.queryOrderedByChild("timecode").queryEndingAtValue(final).queryLimitedToLast(10).observeSingleEventOfType(.Value, withBlock: { snapshot in
for item in snapshot.children {
//do some code to each item, including saving a new value of 'final'
}
})
和保存价值“最终”的最后一次更新的时间代码。也就是说,首先我会得到90-100的结果,并将90的时间码保存为最终的(减1秒),然后将其用于结尾值等等以找到结果80-89。 正如周杰伦介绍如下,但使用时间戳,而不是一个索引号的(因为它已经在那里)
编辑2: 此外,得到它的工作好,我还添加了“.indexOn”:“时间码“到数据库的firebase规则
有几种方法可以做到这一点,但一个超级简单的解决方案是简单地将total_count保留在另一个节点中,并在每个节点中保留索引。然后使用开始和结束于。您也可以在您的节点上使用优先级变量来存储索引。您还可以使用[转换](https://www.firebase.com/docs/web/guide/saving-data.html#section-transactions)对您的节点进行计数,然后使用starter并结束索引。 – Jay
谢谢你。我已经有了一个破解,但不能得到它的工作。如果可能的话,我只想从顶部的键进行查询。我想我后来被称为“分页”,我无法在iOS上找到一种简单的方法,但我不知道如何使用由自动键构造的数据来完成此任务。 – Richie
我发布了一个答案,以协助它的工作。这很简单,但是如果你有问题,请告诉我。 – Jay