当我们使用ref.push在Firebase数据库javascript中编写时触发哪个事件

时间:2019-09-12 09:08:04

标签: javascript firebase firebase-realtime-database insert

当我们使用javascript在firebase中工作时,在使用ref.push或ref.set插入数据后触发了哪个事件。 我想知道是否插入了我的数据

当用户在Firebase中插入数据时断开互联网连接时,我还想抛出一个错误

我还没有看到互联网上的任何功能或方法来告诉我数据是否成功插入。

2 个答案:

答案 0 :(得分:1)

此功能基于Promise,因此您可以使用try / catch:

try {
  firebase.push(data) // or set
} catch (error) {
  console.log(error) // here is error
}

答案 1 :(得分:1)

Firebase实时数据库不会将缺少Internet连接视为错误情况。相反,它会在给定条件下继续发挥其最佳功能。

在没有Internet连接的情况下执行写操作(使用setpushupdateremove)时

  1. 第一个客户端立即触发本地事件,以便您的应用可以为新数据/更新数据更新UI。
  2. 一旦连接恢复,它将排队等待写入操作。
  3. 恢复连接后,客户端将按照客户端执行顺序的顺序发送所有待处理的写操作。
  4. 然后,它处理来自服务器的响应,如果服务器由于安全规则而拒绝了该操作,则该响应可能导致触发更多本地事件,从而使应用程序可以将UI恢复到正确的状态。
  5. 然后,它最终调用任何完成侦听器,并解决或拒绝对set()push()update()remove()方法的承诺。

您会注意到,由于没有Internet连接,因此在任何时候都不会引发错误。

如果在应用程序没有互联网连接时,您不想将任何数据发送到本地队列,则最好检测Firebase客户端是否已连接到服务器。您可以通过listening to the .info/connected pseudo-node进行此操作。这不仅包括建立互联网连接,还包括建立互联网连接但客户端无法访问Firebase的情况。此处的最佳做法是使用“全局”侦听器获取此状态,如果客户端未连接,则禁用相关的UI元素。