【问题标题】:Efficiently move data between nodes in Firebase REST api [duplicate]在 Firebase REST api 中的节点之间有效移动数据 [重复]
【发布时间】:2017-01-07 03:50:01
【问题描述】:

在使用 Firebase REST api 时,如果我想在节点之间移动数据,我该如何做而不需要先下载数据然后重新上传到 Firebase?

例如,如果我目前有以下数据:

root
    branch_1
            branch_1_1
                      child
    branch_2

如果我想将child移动到branch_2,似乎最有效的方法是一个接一个地下载child中的每个项目,然后将它们添加到branch_2中,然后删除branch_1中的child。

编辑1:更改数据结构以更准确地反映需求

【问题讨论】:

标签: performance rest firebase firebase-realtime-database


【解决方案1】:

或者采取完全不同的方法

root
  branches
    -Yiujija9jsd
      branch: "branch_1"
      data: "some data"
      timestamp: "some timestamp"
    -Y88jsj9a9s
      branch: branch_2"
      data: "some other data"
      timestamp: "some timestamp"

然后要将“一些数据”从 branch_1 移动到 branch_2,只需将其分支更新为“branch_2”即可

root
  branches
    -Yiujija9jsd
      branch: "branch_2"
      data: "some data"
      timestamp: "some timestamp"
    -Y88jsj9a9s
      branch: branch_2"
      data: "some other data"
      timestamp: "some timestamp"

*键是使用 childByAutoId 创建的。 ** 我添加了时间戳,以便可以按上次更新时间对其进行排序。

这是一个非常灵活的结​​构,也是一个值得考虑的选项。

【讨论】:

  • 我实际上不建议这样做,因为 firebase 自动生成的 id 是按时间顺序排列的。因此,我必须以某种方式保持我正在移动的节点中的插入时间。
  • @QuanVuong 为什么?没有提到需要在原始问题中保留时间戳,也没有提到订购。您能否使用附加要求更新您的初始问题,以便我们了解您的用例?此外,由于 Firebase 中没有移动功能,因此无需移动即可将数据组织在其相关分支中 - 这再次避免了不必要的下载和上传。只需对分支节点设置一个简单的值即可。
  • 对不起,我没有在我的问题中提到它。我只是认为这不是一个最佳想法,因为稍后我们可能会依赖自动生成的 id 进行排序(团队中不知道名称交换的另一个开发人员可能会产生错误)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 2019-05-18
  • 2018-11-27
  • 2016-05-18
相关资源
最近更新 更多