我的数据在我的 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 index在 timestamp
属性上。建立索引后,您需要进行一些测试以确定使用基于键的查询是否具有显着的性能优势。
关于javascript - firebase orderby key 与 orderby 时间戳,用于分页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38909189/