【问题标题】:How to rename the keys in Firebase Storage and Database如何重命名 Firebase 存储和数据库中的密钥
【发布时间】:2018-05-24 10:37:52
【问题描述】:

我正在使用 Firebase 存储将一些照片上传为 1、2、3 等。然后我使用 Firebase 数据库以相同的方式保存这些照片的下载 URL。我想知道一旦我删除了其中的一张图像,我应该如何处理这些文件。例如,假设我删除了图像 2,并且有 7 个图像。我应该如何重命名 3,4,5,6,7 的键并使它们成为 2,3,4,5,6 ?!

【问题讨论】:

    标签: firebase firebase-realtime-database firebase-storage


    【解决方案1】:

    最好的建议是不要使用这样的序列号,因为它们不能很好地扩展。您当前的问题是它的众多问题之一。有关更多信息,请参阅https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html

    推荐的方法是使用 Firebase 数据库推送 ID 来命名/识别文件。您可以通过ref.push().keyref.push().getKey() 轻松获得此信息。这些 ID 总是递增的,但不是连续的。虽然可读性稍差,但它们的扩展性更好,可以生成离线的原因,并且在删除文件/节点时不必重新生成其他 ID。

    也可以在这里查看 Mike 的回答:Creating a new unique path to Firebase Storage, coupled with storing it in the database?

    【讨论】:

    • 谢谢弗兰克。我应该如何对这些生成的 Id 进行排序?有没有办法对它们进行排序?
    • 推送 ID 的一个优点是,当您按字典顺序对它们进行排序时,它们也是按时间顺序排列的。
    【解决方案2】:

    用于 RTD 的 Firebase 函数 onDelete

    https://firebase.google.com/docs/functions/database-events?hl=es-419

    不允许用户在存储中删除,但允许他们删除 RTD 中的引用。然后 Functions 将处理后端逻辑。

    请确保你的数据结构是正确的,听起来像一个数组,你应该允许按键,使用 Map 代替

    【讨论】:

      猜你喜欢
      • 2016-12-30
      • 2021-03-18
      • 1970-01-01
      • 2017-11-08
      • 2011-03-12
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多