firebase orderby key vs orderby timestamp,用于分页

时间:2016-08-12 03:03:46

标签: 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使用基于时间戳的密钥,对吧?在那种情况下,下面两者有什么区别?两者都会给出相同的结果吗?表现怎么样?

1 个答案:

答案 0 :(得分:4)

不,它们不相同;您示例中基于密钥的查询将无效。

Firebase密钥是从时间戳派生的,但它不仅仅是一个简单的毫秒数。要对键执行时间查询,您需要将时间戳转换为键。有一个Gist here来演示算法。

如果您将基于密钥的查询中的时间戳转换为实际密钥,则两个查询应该在合理范围内相同 - Firebase用于生成推送数据的密钥的时间戳可能与timestamp不匹配你已经存储了数据。

但是,出于性能原因,您需要timestamp属性put an index。有了索引,您需要进行一些测试,以确定使用基于密钥的查询是否有显着的性能优势。