【问题标题】:How to give specific number to the key如何为密钥指定特定编号
【发布时间】:2019-01-06 17:57:32
【问题描述】:

最近我创建了一个以 Firebase 作为后端的 Android 应用程序。我的应用程序中有读写选项。每次我将数据上传到 Firebase 时,都会生成一个自动键名。我想给键名一个特定的数字,比如 1,2,3,4。这怎么可能?

Firebase 结构:

【问题讨论】:

    标签: java android firebase firebase-realtime-database


    【解决方案1】:

    你想做的事是错的,不要去做。 Firebase 正在为您创建此 ID 以防止覆盖这些值/对象。如果 2 个或更多 ppl 将同时添加新记录,他们可能会覆盖它。如果您仍然认为应该这样做,我建议您重新考虑您所做的事情,因为它是错误的。

    【讨论】:

      【解决方案2】:

      我建议您不要使用 1, 2, 3, 4 作为节点的键。对于 Firebase 实时数据库,使用顺序 ID 是一种反模式,因为它肯定会导致可扩展性问题。

      可扩展性来自 Firesbase 如何将数据分散到其存储层。所以顺序 id 有更多的哈希冲突,这意味着你会更快地达到写入限制。具有更随机的 id 可确保写入在存储层中均匀分布。

      如果您有兴趣,here 可以找到push() 方法背后的算法。

      如果您有兴趣实现自己的机制,可以查看UUID,它可以帮助您为 Firebase 数据库节点生成唯一密钥,而无需使用 push() 方法。

      import java.util.UUID;
      
      DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
      DatabaseReference userRef = rootRef.child("Users");
      //key = userRef.push().getKey();
      key = UUID.randomUUID().toString();
      

      这是另一种方法,但我强烈建议您使用那些推送的 id,因为它们基于时间并且完全在客户端生成,无需咨询服务器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-09-25
        • 2011-05-02
        • 1970-01-01
        • 2017-01-30
        • 1970-01-01
        • 1970-01-01
        • 2017-02-27
        • 1970-01-01
        相关资源
        最近更新 更多