Firebase Cloud Function返回'Quiz not found',文档存在却无法获取求助
确认传入的ID与Firestore文档ID完全匹配
Firestore文档ID是大小写敏感的,比如Quiz001和quiz001会被识别为两个不同的ID。同时要检查是否存在空格、特殊字符或拼写错误,建议在函数里添加日志打印传入的ID:logger.info(`Received quiz ID: ${quizId}`);部署后在Firebase控制台的日志里查看该信息,和Firestore里的实际文档ID对比。
检查集合名称拼写是否正确
代码中使用的集合名是quizzes,要确认Firestore控制台里的集合名完全一致(同样大小写敏感),如果集合名是Quizzes或者quiz,都会导致找不到文档。验证函数所属项目与Firestore文档所在项目一致
如果是本地开发,执行firebase use命令确认当前使用的项目是存储目标文档的项目;如果是已部署的函数,要确认部署时选择的项目正确,避免跨项目访问。检查函数的权限配置
部署后的Cloud Functions默认拥有访问Firestore的权限,但如果手动修改过IAM角色,可能导致函数无法读取文档。在Firebase控制台的Cloud Functions页面,找到该函数的服务账号,确保其拥有Cloud Datastore User或Firestore Reader权限。确认文档位置是否正确
确保目标文档是在根集合quizzes下,而不是某个父文档的子集合中。如果文档是在子集合(比如users/{userId}/quizzes/{quizId}),代码中的集合路径需要调整为对应的子集合路径。
调试建议:
可以使用Firebase本地模拟器进行测试,在本地启动Firestore模拟器并添加测试文档,然后调用本地函数,这样能更直观地排查路径、ID匹配等问题。
内容的提问来源于stack exchange,提问作者Todd Davis

