【问题标题】:Is there a way to detect if Firestore is not working because the client is behind a proxy?有没有办法检测 Firestore 是否因为客户端位于代理后面而无法工作?
【发布时间】:2020-12-17 18:39:52
【问题描述】:

我最近将我们的网络应用程序从 Google Appengine (python 2.7) 移到了 Nodejs/Firebase/Firestore。

在 Google Appengine 上托管时,用户可以访问数据库 (NDB),无论他们是否在公司代理后面。

现在,自从切换到 Firestore 后,企业代理背后的用户无法访问他们存储在 Firestore 中的数据。

The answer here 表示用户必须对其防火墙配置进行一些调整,才能使使用 Firestore 的应用程序正常工作。因此,至少,我想向用户表明该应用程序无法正常工作,因为他们需要对其防火墙进行调整。

如何检测用户是否因为代理而无法访问 Firestore?在这种情况下是否会触发任何FirestoreErrorCodes

【问题讨论】:

  • 网络错误通常会被 Firestore SDK 静默忽略并重试。我建议寻找另一种更直接的方法来测试这种特定情况,而不是依赖于 SDK。
  • 感谢@DougStevenson 澄清这一点。在这种情况下,您有更直接的方法推荐吗?
  • 如果您根本没有 Firestore SDK 可以使用,您会怎么做?
  • 我真的不知道。当我在 Google Appengine 上托管应用程序时,使用 NDB 作为数据存储区,这不是问题,所以在我转移到 Firestore 后它措手不及。

标签: firebase google-cloud-firestore


【解决方案1】:

herehere 之前已经回答了这个问题。如前所述,没有内置功能告诉您正在离线工作,您将不得不依赖外部方法来测试它,正如建议的那样,有一个名为 metadata.hasPendingWrites 的属性可以帮助您确定文档是否有尚未写入后端的本地更改,您可以使用它来确定 Firestore 是否能够访问服务器。

【讨论】:

  • 代理问题不一定与用户离线相同。当用户在代理后面时,他/她仍然可以检索和呈现从例如传递的数据。 firebase 云功能。我可以让云功能与 firestore 交互并向用户传递数据,但是从客户端到 firestore 的直接交互是行不通的。我了解这些挑战,并且可能会使用例如解决这些挑战。云函数。
  • 用户可以写文档吗?如果不是,即使不是同一个问题,解决方案也可能类似,因为您可以确定您无法访问服务器进行写入。
  • 好点。在我的情况下,用户需要读取数据。
  • 您能否更具体地说明您在尝试从代理后面读取时遇到的错误?您使用的是 nodejs 的管理员或客户端 SDK 吗?您能否详细说明您的具体实施,以便我可以提出一个可能的解决方法?
  • 感谢您愿意帮助 Emmanuel。解决方法将取决于我们在每种情况下的实施。我们可以弄清楚如何处理它。感谢您对此给予关注。
猜你喜欢
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 2011-11-25
相关资源
最近更新 更多