Firebase Emulator Suite添加引用变为空字符串问题
我在Firebase Emulator Suite中向集合添加文档时,输入文档引用路径 /player_sessions/ZJI1bfIKUBDGiQ9PMBFc,结果对应的player_session_id字段变成了空字符串,而非预期的文档引用:
- 创建文档时按步骤操作,但完成后
player_session_id显示为空字符串 - 但编辑该字段时,使用完全相同的路径,却能正常更新并生成正确的文档引用
请问这是我的操作有误,还是Firebase Emulator Suite的Bug?这个问题导致我无法排查Firebase Functions中onCreated触发器的相关问题。
修正引用输入格式
手动输入引用路径时,不要带开头的斜杠,直接输入player_sessions/ZJI1bfIKUBDGiQ9PMBFc;或者更稳妥的方式是点击字段类型选择"引用"后的选择按钮,从列表里直接选中目标文档,避免手动输入出错。更新模拟器版本
旧版本的Firebase模拟器可能存在字段处理的Bug,执行命令更新到最新版:npm install -g firebase-tools更新完成后重启模拟器再测试。
清理模拟器缓存
关闭模拟器,删除本地模拟器缓存目录(默认路径是~/.cache/firebase/emulators),然后重新启动模拟器,再尝试创建文档。确认目标文档存在
确保player_sessions/ZJI1bfIKUBDGiQ9PMBFc这个文档已经在模拟器的Firestore中存在,虽然Firestore允许引用不存在的文档,但模拟器可能对此有特殊处理,导致字段异常。对比真实环境测试
临时在Firebase生产环境中做同样的创建操作,如果生产环境正常,那基本可以确定是模拟器的Bug,可在Firebase官方渠道提交反馈;如果生产环境也出现同样问题,那就是操作或配置的问题,需要再检查字段类型设置等细节。
内容的提问来源于stack exchange,提问作者Westerlund.io

