我们可以假设一下吗?它们是全球唯一的(跨所有Firebase)吗?有什么排序吗?客户重要吗?
是否有公共图书馆/文档,所以我也可以生成这些ID?
我指的是push产生的那些
它上面有一篇博文,还有一个Gist.
从博客文章中,这是推送ID中的内容的核心:
推送ID包含120位信息.前48位是时间戳,它既降低了碰撞的可能性,又允许连续创建的推送ID按时间顺序排序.时间戳之后是72位随机性,这确保即使两个人在完全相同的毫秒内创建推送ID也极不可能生成相同的ID.对随机性的一个警告是,如果客户端在相同的毫秒内创建多个推送ID,为了保持按时间顺序排列,我们只需将随机位"递增"一.
要将我们的120位信息(时间戳+随机性)转换为可用作Firebase密钥的ID,我们基本上将其编码为ASCII字符,但我们使用修改后的base64字母表确保ID在订购时仍能正确排序按字典顺序排列(因为Firebase键是按字典顺序排序的).
另外值得注意的是,社区完成了几种不同语言的端口:
红宝石
PHP
蟒蛇
Java的
尼姆罗德
走
LUA
迅速
所以也许最好的学习方法是选择一种不在该列表上的语言并移植它!