【问题标题】:Improved way to rollback a list of 'push' into firebase将“推送”列表回滚到 Firebase 的改进方法
【发布时间】:2018-04-23 20:19:10
【问题描述】:

我有一个多次地震登记的列表(大约 200 个,为了示例,只放 2 个):

{
  "EVENTS" : {
    "-Yn6oKFQdn5s24R" : {
      "event" : {
        "date" : "22/04/18",
        "time" : "10:01:45",
        "place" : "Some place"
      },
      "timestamp" : "Mon Apr 23 2018 12:05:00 GMT-0600"
    },
    "-R96Yn6oKFQdn5s" : {
      "event" : {
        "date" : "23/04/18",
        "time" : "11:02:45",
        "place" : "Some place"
      },
      "timestamp" : "Mon Apr 23 2018 12:05:00 GMT-0600"
    }
  }
}

这个列表是如何工作的? (在我的服务器上)

  • 每次检测到新事件时,都会将其添加到列表中。
  • 有时,可能未检测到该事件。 正确并需要更新,或者需要删除它以进行其他操作 原因。
  • 列表有限制,当添加新事件时,其他一些 事件已从列表中删除

所以,当我要去pushfirebase 上的列表时,无论出于何种原因服务器上的列表已更改,我不想查看哪些注册表已更改或更新,而是我更喜欢查看删除完整列表并重新填充。

我正在思考的问题

如果在我删除firebase 上的列表后,当我推送时,某些请求失败了怎么办?如果发生这种情况,我在firebase 上的列表将是空的。

我有什么

我已经编写了一个代码,首先保存现有的密钥,然后进行推送。如果某些注册表失败,则删除添加的新键,如果没有,则删除第一步保存的键并保留新添加的键。

所以,我的问题

Firebase Real Time Database 中是否有一些改进的方法可以处理这种情况?我已经阅读了有关transactions 的信息,但我不知道这是否有帮助。

【问题讨论】:

  • 和往常一样,我关于firebase的问题没有得到任何人的回答或评论:(

标签: javascript loops firebase firebase-realtime-database


【解决方案1】:

嗯,根据我的具体情况,我发现使用.set() 而不是.push() 更有助于完成我需要的工作。

为什么?

  • 如果我在列表中执行.set(),它将覆盖已经存在的数据 那里;无论哪个注册表已更改,或者它以前因任何原因在我的服务器中被删除,.set() 都会为我保留订单。

  • 当我想更新列表中的所有数据时,我不必创建.remove(),因为-正如我之前所说-此方法保持顺序以一种很棒的方式。

我所说的例子:


奖励 1:

作为评论,我想防止不要将.push().set().set() 混淆。为什么?因为前一个 -在 Firebase JavaScript SDK- 的作用与 .push() 相同。 Look here

奖励 2:

如果你想用.set()清空列表,你只需要为新值传递一个null,因为这样做就相当于调用.remove()。太棒了!

docsfirebase.database.Reference 上查看更多内容,了解所有详细方法。

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 1970-01-01
    • 2020-03-25
    • 2016-03-13
    • 2017-05-13
    相关资源
    最近更新 更多