Firebase 实时数据库 - DatabaseReference.push().getKey() 是一个时间戳

Posted

技术标签:

【中文标题】Firebase 实时数据库 - DatabaseReference.push().getKey() 是一个时间戳【英文标题】:Firebase Real Time DB - DatabaseReference.push().getKey() is a TimeStamp 【发布时间】:2022-01-06 05:06:00 【问题描述】:

根据Documentation,下面的代码可以在实时数据库中使用push()设置时间戳作为节点的键。

public void uploadToDB(String s) 
databaseReference.push().setValue(s);

返回的key在我的push()下面,例如: a)-mpfcu14jtikek28d3cb. b)-mpfcxv_nzv3yj87mfzh

我的问题是:

    它们是时间戳吗? 如果可以,我可以将其解码回可读的时间戳吗?

【问题讨论】:

【参考方案1】:
    它们是时间戳吗?

不,那些推送的 ID 不是时间戳。但是,它包含一个时间组件。

正如 Michael Lehenbauer 在 blog article 中提到的:

推送 ID 是在客户端生成的字符串标识符。它们是时间戳和一些随机位的组合。时间戳确保它们按时间顺序排列,随机位确保每个 ID 都是唯一的,即使有数千人同时创建推送 ID。

并回答第二个问题:

    如果是,我可以将其解码回可读的时间戳吗?

如果你逆向工程,可能是的。请检查以下答案:

How are Firebase IDs generated?

但不会指望这一点。要根据时间组件进行排序,则应添加“时间戳”类型的属性,如我在以下帖子中的回答中所述:

How to save the current date/time when I add new value to Firebase Realtime Database

【讨论】:

感谢您的快速回答

以上是关于Firebase 实时数据库 - DatabaseReference.push().getKey() 是一个时间戳的主要内容,如果未能解决你的问题,请参考以下文章

检查 Firebase 实时数据库中的现有值

在 Swift 中更新 Firebase 实时数据库中的父标题

const db = firebase.database() 不是一个函数 React native

Android config firebase realtime database rule for normal user access

Firebase 实时数据库现在无法正常工作?

Firebase:从实时数据库中检索 childByAutoID