热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Firebase:如何为密钥生成唯一的数字ID?

如何解决《Firebase:如何为密钥生成唯一的数字ID?》经验,为你挑选了2个好方法。

我需要数字ID才能实现人类可读性.如何在Firebase中获取它?

我想要键的数字ID,例如"000000001","000000002","00000003","00000004".

我需要它的原因是因为这些ID将成为在线和离线的永久对象ID.我希望用户只需输入URL"/ objects/00000001"即可浏览该对象页面.

我在这里问,因为我想知道这是否可以在不使用.priority子属性等的情况下完成.我想set方法可以以某种方式完成.如果不可能,请告诉我不,我可以接受这个答案.



1> Sinan Bolel..:

我建议您阅读Firebase文档.具体来说,请参阅Firebase Javascript Web指南的" 保存数据"部分.

从指南:

获取push()生成的唯一ID

调用push()将返回对新数据路径的引用,您可以使用该路径获取其ID的值或将数据设置为它.以下代码将生成与上述示例相同的数据,但现在我们可以访问生成的唯一推送ID

// Generate a reference to a new location and add some data using push()
var newPostRef = postsRef.push({
  author: "gracehop",
  title: "Announcing COBOL, a New Programming Language"
});
// Get the unique ID generated by push() by accessing its key
var postID = newPostRef.key;

资料来源:https://www.firebase.com/docs/web/guide/saving-data.html

push生成一个新的数据路径,其服务器时间戳为key.这些键看起来像-JiGh_31GA20JabpZBfa,所以不是数字.

如果您想创建一个只有数字的ID,您可以将该参数作为对象的参数,以避免覆盖生成的键.

密钥(新数据的路径)保证是唯一的,因此用数字密钥覆盖密钥是没有意义的.

您可以将数字ID设置为对象的子项.

然后,您可以使用Firebase查询通过该ID子查询对象.

从指南:

在Javascript中,调用push()然后立即调用set()的模式非常常见,我们允许您通过将要直接设置的数据传递给push()来组合它们,如下所示.以下两个写入操作都将导致将相同的数据保存到Firebase:

// These two methods are equivalent
postsRef.push().set({
  author: "gracehop",
  title: "Announcing COBOL, a New Programming Language"
});
postsRef.push({
  author: "gracehop",
  title: "Announcing COBOL, a New Programming Language"
});

资料来源:https://www.firebase.com/docs/web/guide/saving-data.html


似乎`newPostRef.key()`不再有效......`newPostRef.key`确实返回了生成的密钥.看起来它直接绑定到属性而不是从名为`key()`的函数返回.

2> htafoya..:

如上所述,您可以使用Firebase默认推送ID.

如果你想要一些数字,你可以根据时间戳做一些事情来避免碰撞

基于日期,小时,秒,ms以及最后的一些随机int的东西

01612061353136799031

这意味着:

016-12-06 13:53:13:679 9031

这一切都取决于您需要的精确度(社会安全号码与日期末的一些随机字符相同).就像白天,小时或秒钟预计会有多少交易一样.您可能希望降低精度以便于键入.

您还可以执行增加数字ID的事务,并且在成功时,您将为该用户提供唯一的连续编号.这些可以在客户端或服务器端完成.

(https://firebase.google.com/docs/database/android/read-and-write)


@ T9b秘密ID并不总是必须的,以Facebook为例,你可以简单地开始输入整数来获取用户资料(MZ为4).但你无法用这些数据做更多的事情.
这不是一种安全的方法,因为可以通过简单地循环遍历所有可能的值来进行冲突.push方法产生的哈希可能更好,虽然我不知道使用了什么算法.
推荐阅读
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Python字典推导式及循环列表生成字典方法
    本文介绍了Python中使用字典推导式和循环列表生成字典的方法,包括通过循环列表生成相应的字典,并给出了执行结果。详细讲解了代码实现过程。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
author-avatar
毛残品_394
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有