Firebase Firestore 模拟器 UI 未显示任何数据,但数据正在应用查询中返回

Firebase Firestore Emulator UI is not showing any data, but data is being returned in app query

我在使用 firebase 的 firestore 模拟器时遇到了一个奇怪的问题。当我启动模拟器并检查模拟器的 firestore UI 时,它显示数据库中还没有数据。

然后,我尝试查询 firestore 模拟器以获取来自我的 react-native 应用程序的数据,令人惊讶的是,上一个会话的旧数据又回来了。我正在返回我在上一个会话中添加的数据,但它在模拟器上不可见 UI。

我的印象是关闭模拟器会删除该会话期间添加的所有数据,所以,下次启动模拟器时,为什么我会看到上一个会话的数据?好像它以某种方式缓存在某个地方...?

我在 stack-overflow 上看到了多篇关于将 --project 参数提供给 firebase emulators:start 终端命令的帖子。这似乎对我的情况没有任何影响。

如果有任何解决建议,我将不胜感激。

事实证明,firebase 本机版本具有某种行为有点奇怪的缓存机制。

对我有用的解决方案是,我从 emulator/device 中删除了我正在开发的应用程序,并确保在出现提示时点击“删除所有应用程序数据”。

在那之后,我会重新安装并且 firebase 会像预期的那样运行良好。

根据我的经验,必须将应用连接到的项目与 Firebase CLI 当前正在使用的项目相匹配。否则,Firestore 模拟器 UI 不会显示与应用程序的实时交互。

具体来说,应用正在使用 google-service.jsonGoogleService-Info.plist 文件的 Firebase 项目必须与 firebase projects:list 的输出中当前正在使用的项目相匹配。

如果两个项目不匹配,应用仍然可以连接到模拟器;数据读写也可以;但实时 Firestore 模拟器 UI 不会显示任何内容。

我的问题是由两个不同端口上的模拟器 UI 运行 引起的。我正在查看的端口来自未正确关闭的旧进程。

切换到“日志”选项卡,查看是否有类似

的消息

Emulator UI unable to start on port 4000, starting on 4003 instead.

如果是这样,请确保您在端口 4003 而不是 4000(在此示例中)上查看模拟器,或者终止端口 4000 上的旧进程 运行,然后重新启动模拟器。