我正在尝试使用Firestore创建一个渐进式Web应用程序。当计算机处于联机状态时,Web应用程序可以正常运行,而在脱机状态下则无法运行。
我已启用如下所示的Firestore离线持久性-
firebase.firestore().settings({ timestampsInSnapshots: true });
firebase.firestore().enablePersistence().then(() => {
this.db = firebase.firestore();
});
如果计算机脱机时运行该应用程序,则会出现以下错误。
[2018-10-23T07:15:24.406Z] @firebase/firestore: Firestore (5.5.0): Could not reach Cloud Firestore backend. Connection failed 1 times. Most recent error: FirebaseError: [code=unavailable]: The operation could not be completed
This typically indicates that your device does not have a healthy Internet connection at the moment. The client will operate in offline mode until it is able to successfully connect to the backend.
尝试从Firestore数据库获取文档失败,并显示错误
Uncaught (in promise) Error: Failed to get document because the client is offline.
我了解这两个错误在技术上都是正确的。但是,由于启用了离线持久性功能,这些错误不应该不会发生吗?
答案 0 :(得分:1)
获取离线数据:如果您在设备离线时获取文档, Cloud Firestore从缓存返回数据。如果没有缓存 包含该文档的数据,或者该文档不存在, 获取呼叫返回错误。
查询离线数据:查询具有离线持久性。您可以 使用直接get或by检索查询结果 聆听,如前面各节所述。您也可以创建 设备离线时,对本地持久数据的新查询,但是 查询最初将仅针对缓存的文档运行。
离线持久性并不意味着您的客户可以在没有Internet的情况下与Firestore进行通信,这意味着,例如,一旦再次建立Internet连接,他所做的更改便会提交给相关文档。
考虑为用户缓存相关文件以在一定程度上扩展离线使用PWA。