javascript - firebase orderby key 与 orderby 时间戳,用于分页

标签 javascript firebase firebase-realtime-database

我的数据在我的 firebase 中看起来像这样。

users: {
-KOwKNCB5IiDBxY9FNzR: {
  content: { blah blah },
  timestamp:1470964762934

 },
 -KOwKNCB5IiDBxYsdsds: {
   content: { blah blah },
   timestamp:1444964762934
 },
 --HHiOwKNCB5IiDBxY9FN: {
   content: { blah blah },
   timestamp:1579864762934
 }
}

这两者有什么区别?

  • ...orderByChild("timestamp").startAt(starttime).endAt(endTime).limitToLast(10)
  • ...orderByKey().startAt(starttime).endAt(endTime).limitToLast(10)

我在添加数据时使用了 Push ref 键。 Firebase 使用基于时间戳的 key ,对吗?那么,下面两者有什么区别呢?两者会给出相同的结果吗?性能怎么样?

最佳答案

不,它们不等价;您的示例中基于键的查询将不起作用。

Firebase key 源自时间戳,但它不仅仅是简单的毫秒计数。要对键执行临时查询,您需要将时间戳转换为键。有一个要点here演示了该算法。

如果您将基于 key 的查询中的时间戳转换为实际 key ,则这两个查询在合理范围内应该是等效的 - Firebase 用于为推送数据生成 key 的时间戳可能与时间戳不匹配 您已存储在数据中。

但是,出于性能原因,您需要 put an indextimestamp 属性上。建立索引后,您需要进行一些测试以确定使用基于键的查询是否具有显着的性能优势。

关于javascript - firebase orderby key 与 orderby 时间戳,用于分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38909189/

相关文章:

javascript - 将 php 变量传递给 Chart.js 文件

javascript - 在悬停时在正确位置显示 div(工具提示)

javascript - 刷新后 firebase uid 变为未定义

android - 使用VB.NET向android模拟器发送通知得到错误401

swift - 使用 swift 从 firebase 获取数据范围

ios - Firebase 在模拟器中工作但在 iPhone 上不工作

javascript - 正则表达式 - 检查整数不起作用

javascript - 展示类(class)形象 10 秒

firebase - Firebase是通用数据库吗?

ios - 为什么在 tableViewCell 中点击一个按钮时只返回一个 uid?