Firestore如何clearPersistence()

Dod*_*odo 1 javascript firebase angularfire2 google-cloud-firestore

用户注销后,我需要完全清除当前用户数据。因此我使用clearPersistence()函数。它需要在clearPersistence()之前运行terminate()。

 this.afs.firestore.terminate().then(() => {
      this.afs.firestore.clearPersistence().then(() => {
      });
});
Run Code Online (Sandbox Code Playgroud)

在上面运行以下命令以清除 firestore 本地缓存后,我收到此错误。

FirebaseError: The client has already been terminated.

有什么建议如何重新初始化 firestore 实例或有更好的方法来实现吗?谢谢。

Dou*_*son 5

这不是 的预期目的clearPersistence()。我建议仔细阅读API文档:

必须在 firestore 实例未启动时调用(应用程序关闭后或应用程序首次初始化时)。启动时,必须在其他方法(settings() 除外)之前调用此方法。如果 firestore 实例仍在运行,则 Promise 将被拒绝,错误代码为 failed-precondition。

注意:clearPersistence() 主要旨在帮助编写使用 Cloud Firestore 的可靠测试。它使用有效的机制来删除现有数据,但不会尝试安全地覆盖或以其他方式使缓存的数据无法恢复。对于对用户会话之间缓存数据的泄露敏感的应用程序,我们强烈建议根本不要启用持久性。

第二段告诉您,您可能根本不应该启用持久性。

第一段告诉您,在测试期间使用clearPersistence只能在Firestore应用程序实例首次初始化之后(并且在任何查询之前)或应用程序完全关闭之后立即完成。