Firebase Emulator Suite如何持久化非默认数据库数据?
Firebase模拟器自定义数据库持久化问题解答
原命令是否自动导出所有数据?
不会。默认情况下,--export-on-exit只导出名为(default)的默认数据库实例,自定义数据库实例的数据不会被自动包含进去。为什么自定义数据库恢复后始终为空?
核心原因是你没在命令里指定要处理的自定义数据库实例:- 启动模拟器时用
--import,默认只会加载(default)实例的数据,自定义实例的导入路径没被指定; - 导出时
--export-on-exit也没捕获自定义实例的数据,导致./STORAGE目录里根本没有自定义数据库的内容,恢复自然为空。
- 启动模拟器时用
是否应改用export命令而非--export-on-exit?
如果经常遇到关机中断保存的情况,手动执行firebase emulators:export确实更可靠——这个命令是主动触发导出,不受模拟器退出方式影响,还能精确指定要导出的实例。--export-on-exit是否不支持非默认数据库?
支持,但必须显式指定要导出的数据库实例。默认不会自动遍历所有实例,需要在命令里加上--database-instance参数。
解决命令示例
方式1:启动时同时处理自定义数据库的导入/导出
DIRECTORY="./STORAGE" firebase emulators:start \ --import $DIRECTORY \ --export-on-exit $DIRECTORY \ --database-instance your-custom-db-name \ $@
执行后,自定义数据库的数据会被导出到./STORAGE/database/your-custom-db-name目录下,下次启动时也会从该路径加载数据。
方式2:手动导出自定义数据库
当模拟器运行时,新开终端执行:
firebase emulators:export ./STORAGE --database-instance your-custom-db-name
这样可以随时主动导出数据,避免关机中断的问题。
内容的提问来源于stack exchange,提问作者Luponius
相关产品推荐
相关产品推荐

