【问题标题】:Database operations when there is no internet, Firebase Angular/Ionic没有互联网时的数据库操作,Firebase Angular/Ionic
【发布时间】:2021-07-27 17:38:29
【问题描述】:

我有一个函数可以更新 firebase 实时数据库中文档的某个属性。我的应用程序对该特定属性做出反应。我的问题是如果没有互联网连接,数据库中的属性会更新吗?处理这个问题的最佳方法是什么?

示例代码:

onCancel() {
   this.db.object('trips/' tripId).update({
      status: 'Canceled'
   })
}

【问题讨论】:

    标签: javascript angular ionic-framework firebase-realtime-database angularfire


    【解决方案1】:

    这取决于您使用的数据库。如果您正在为 Web 或本地开发。在本机中,两个数据库都支持离线工作。在网络中它有点不同:

    实时数据库仅支持“隧道模式”,它将此类请求放入queue 并稍后在重新连接时尝试它们。这正是您在短时间内失去连接的情况。您还可以使用工具来监听连接更改。更多相关信息here

    Firestore 数据库支持完全离线工作。您只需要手动启用它:

    firebase.firestore().enablePersistence()
      .catch((err) => {
          if (err.code == 'failed-precondition') {
              // Multiple tabs open, persistence can only be enabled
              // in one tab at a a time.
              // ...
          } else if (err.code == 'unimplemented') {
              // The current browser does not support all of the
              // features required to enable persistence
              // ...
          }
      });
    

    更多信息here

    【讨论】:

      【解决方案2】:

      不,数据库不会更新,因为对于 Firebase,您的后端和数据库存储在云端,因此您肯定需要互联网连接。 在现实生活场景中,使用您的应用程序的用户将始终连接到互联网,以获取应用程序运行所需的其他数据,因此无需恐慌。 只要确保您在编码时有良好的互联网连接即可。

      【讨论】:

      • 并没有真正回答这个问题,就好像你在暗示用户将永远连接到互联网,这根本不是真的。我在问如果用户未连接并试图调用该函数,我该怎么办。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 2022-01-11
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 2020-03-08
      • 2022-12-16
      相关资源
      最近更新 更多