android - 当我们在 Firebase 中调用 push() 生成 key 时,位置是否重要?

标签 android firebase-realtime-database

我有数据库引用:

DatabaseReference databaseRef = FirebaseDatabase.getInstance().getReference();

正在打电话

databaseRef.push().getKey()    // first

不同于调用

databaseRef.child(<key>).child(<key>).push().getKey()    // second

?

潜在问题如下:如果我在使用第二种方式之前插入了一条记录,然后使用第一种方式添加了一条新记录,我是否会破坏 Firebase 生成的键的顺序属性?

最佳答案

首先会为您的根创建一个新节点,而第二个会为您的特定位置创建一个新节点。基本上,push 方法通过为它分配一些神奇的数字作为键来为您创建一个新节点。 你的树像:

-root
   |
    - a
   |
    - b

如果你调用 databaseRef.push() 它将是这样的:

-root
   |
    - a
   |
    - b
   |
    - -KogjXeeIigb6SO-m3Qc

然后,如果您调用 databaseRef.child('b').push(),它将类似于:

-root
   |
    - a
   |
    - b
      |
       - -Kola-ft7S-atSMBmOhJ
   |
    - -KogjXeeIigb6SO-m3Qc

这些键是基于当前时间的,所以无论你最后调用哪个都会得到最新的时间

关于android - 当我们在 Firebase 中调用 push() 生成 key 时,位置是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45035166/

相关文章:

jquery - 创建一个新的 Firebase 存储的唯一路径,并将其存储在数据库中?

ios - 如何让 Firebase 添加新用户而不覆盖当前用户(iOS、Xcode 8)?

Swift firebase 查询有序搜索

android - Firebase runloop (3.0.0) 中的未捕获异常在我的生产 Android 应用程序中。请报告给 support@firebase.com

android - 将 fragment 添加到操作栏中

java - Google 登录仅适用于第一台设备

java - 验证用户电子邮件身份验证

ios - 无法将类型 ‘NSNull’ (0×106a4f520) 的值转换为 ‘NSDictionary’

android - Android SDK 中的 Rect 和 RectF

android - 从 fragment 返回时,recyclerview 为空