首页 > 解决方案 > Firebase Functions 模拟器失去与 Firestore 的连接

问题描述

我有一个设置,我可以在本地模拟我的 Cloud Functions,它们可以访问我的 Firestore 数据库。它曾经很好地用于开发和测试,但最近它失去了与 Firestore 数据库的连接。

我想知道是否有其他人遇到过这个问题或有想法,如何解决?

由于我不明白,发生了什么变化,以下是我尝试和观察到的事情的列表:

  1. 我已将 firebase-tools、firebase-admin 和 firebase-functions 更新到最新版本
  2. 我将 GOOGLE_APPLICATION_CREDENTIALS 存储在计算机上的 json 文件中,然后运行firebase emulators:start 启动服务器并正常运行我的功能。
  3. 但是,当函数请求数据库时,它不会抛出错误,而只是返回空结果集。
  4. 如果我在一个函数中向数据库添加新文档,然后在同一函数中查询集合,我会得到新创建的文档。所以这让我想,我已经进入了某种测试模式?

抱歉缺少代码,但我真的不知道从哪里开始这些“它曾经有效”的情况......

标签: firebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


显然现在

firebase emulators:start 

...将不再将您连接到真正的 Firestore 数据库,因为它模拟 Firestore 数据库。如果你跑

firebase emulators:start --only functions

..它根据提供的凭据连接到 Firestore。我不确定何时引入了这种行为,但希望这可以帮助其他遇到同样情况的人。

我现在正在运行最新版本:

"firebase-admin": "^8.12.1",
"firebase-functions": "^3.6.1"

推荐阅读