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.json
或 GoogleService-Info.plist
文件的 Firebase 项目必须与 firebase projects:list
的输出中当前正在使用的项目相匹配。
如果两个项目不匹配,应用仍然可以连接到模拟器;数据读写也可以;但实时 Firestore 模拟器 UI 不会显示任何内容。
我的问题是由两个不同端口上的模拟器 UI 运行 引起的。我正在查看的端口来自未正确关闭的旧进程。
切换到“日志”选项卡,查看是否有类似
的消息
Emulator UI unable to start on port 4000, starting on 4003 instead.
如果是这样,请确保您在端口 4003 而不是 4000(在此示例中)上查看模拟器,或者终止端口 4000 上的旧进程 运行,然后重新启动模拟器。
我在使用 firebase 的 firestore 模拟器时遇到了一个奇怪的问题。当我启动模拟器并检查模拟器的 firestore UI 时,它显示数据库中还没有数据。
然后,我尝试查询 firestore 模拟器以获取来自我的 react-native 应用程序的数据,令人惊讶的是,上一个会话的旧数据又回来了。我正在返回我在上一个会话中添加的数据,但它在模拟器上不可见 UI。
我的印象是关闭模拟器会删除该会话期间添加的所有数据,所以,下次启动模拟器时,为什么我会看到上一个会话的数据?好像它以某种方式缓存在某个地方...?
我在 stack-overflow 上看到了多篇关于将 --project
参数提供给 firebase emulators:start
终端命令的帖子。这似乎对我的情况没有任何影响。
如果有任何解决建议,我将不胜感激。
事实证明,firebase 本机版本具有某种行为有点奇怪的缓存机制。
对我有用的解决方案是,我从 emulator/device 中删除了我正在开发的应用程序,并确保在出现提示时点击“删除所有应用程序数据”。
在那之后,我会重新安装并且 firebase 会像预期的那样运行良好。
根据我的经验,必须将应用连接到的项目与 Firebase CLI 当前正在使用的项目相匹配。否则,Firestore 模拟器 UI 不会显示与应用程序的实时交互。
具体来说,应用正在使用 google-service.json
或 GoogleService-Info.plist
文件的 Firebase 项目必须与 firebase projects:list
的输出中当前正在使用的项目相匹配。
如果两个项目不匹配,应用仍然可以连接到模拟器;数据读写也可以;但实时 Firestore 模拟器 UI 不会显示任何内容。
我的问题是由两个不同端口上的模拟器 UI 运行 引起的。我正在查看的端口来自未正确关闭的旧进程。
切换到“日志”选项卡,查看是否有类似
的消息Emulator UI unable to start on port 4000, starting on 4003 instead.
如果是这样,请确保您在端口 4003 而不是 4000(在此示例中)上查看模拟器,或者终止端口 4000 上的旧进程 运行,然后重新启动模拟器。