【问题标题】:How To Prevent Firebase Firestore Emulator From Clearing The Database At Exit?如何防止 Firebase Firestore 模拟器在退出时清除数据库?
【发布时间】:2019-10-27 09:12:46
【问题描述】:

我计划使用 Firebase - Firestore 模拟器来处理来自 Websocket 的大量数据。

我只需要在本地实时处理数据。

Firestore Emulator 是一个不错的选择,因为它具有我需要的所有功能。但问题是每次关闭模拟器时都会清除数据库。是否有任何配置或设置可以改变这种行为?

如果不可能。有人可以告诉我在本地使用 Firestore 的任何其他方法吗?或我可以在本地使用的任何其他 firebase 替代品。

【问题讨论】:

    标签: firebase google-cloud-firestore


    【解决方案1】:

    随着最近对 Firebase 模拟器的更新,您可以在模拟器运行时导出数据,并在它再次启动时导入。

    导出数据

    firebase emulators:export <export-directory>
    

    启动和导入模拟器

    firebase emulators:start --import <export-directory>
    

    【讨论】:

    • 您现在还可以添加--export-on-exit 标志以在退出模拟器时自动导出数据。数不清有多少次我因为不记得先导出就退出而丢失了一堆有用的测试数据!
    • @JamesAllen 嗨,您能否指出有关更新的文档或教程
    • 不要运行firebase emulators:export . 如果失败,它将删除文件夹中的所有内容。不要犯我犯的错误。 :)
    【解决方案2】:

    我已经使用参数管理了这个启动 Firebase 模拟器,以便在退出时导出数据并导入现有的:

    firebase emulators:start --import=exported-dev-data --export-on-exit=exported-dev-data
    

    这样模拟器总是将我生成的数据导出到文件夹exported-dev-data,并在重新启动时将其加载回来。

    【讨论】:

    • 您为我节省了大量时间。谢谢!
    • @Bivis 你是如何停止模拟器的?我正在运行 auth、firestore 和 pub-sub。我在运行 emulators:start 命令的同一个窗口中按了 Ctrl+C。Pub-sub 永远不会被杀死,firestore 或 auth 的端口都没有被释放,有时我会得到一个日志,要求导出完全关闭, 但有时 ^C 之后根本没有日志。它导入我使用第二个 firebase CLI 导出的数据,但从不保存修改后的数据。
    • @JeffNeet 我正在停止像你这样的模拟器,在运行模拟器的终端窗口中使用 Ctrl+C。这需要一段时间,但模拟器停止。但我没有使用 Pub-sub,所以我不知道这是否是其中的错误。但是您可以在尝试停止模拟器之前打开另一个终端窗口并使用“firebase emulators:export export-dev-data”命令手动导出数据,它将在下次启动时使用上述命令加载
    • @Bivis 感谢您的提示!我将尝试通过单独的终端导出。
    【解决方案3】:

    目前您需要编写代码以在每次运行模拟器期间填充数据库。

    如果您想查看不同的行为,请file an issue on GitHub

    【讨论】:

      猜你喜欢
      • 2022-07-19
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 2020-03-14
      相关资源
      最近更新 更多