使用Node.js与firebase-admin SDK查询Firebase集合,如何提取目标文档?
问题解答
查询是否失败?
没有失败。Firestore 的 get() 方法如果请求出错会直接抛出异常,你能拿到完整的 QuerySnapshot 对象,说明请求已成功完成。从返回的对象里 _size: 1 能看出,当前查询实际获取到了1个文档,和你预期的2个不符。
提取文档数据的方法
QuerySnapshot 提供了便捷的方法来获取文档内容,常用两种方式:
遍历文档
// 逐个遍历每个文档,打印ID和对应数据 allPlayers.forEach(doc => { console.log(doc.id, "=>", doc.data()); });
转为结构化数组
如果需要把文档数据整理成包含ID的数组,可用 map 转换:
const playersData = allPlayers.docs.map(doc => ({ id: doc.id, ...doc.data() // 展开文档的字段数据 })); console.log(playersData);
为什么只返回1个文档?
你预期2个但实际只有1个,大概率是这几个原因:
- 集合内确实只有1个文档:去Firebase控制台的Firestore数据库,检查
players集合的文档数量 - 服务账号权限问题:虽然Admin SDK默认拥有全权限,但如果你的密钥文件对应账号被限制了访问权限,可能导致获取不全
- 集合名称拼写错误:确认代码里的
collection('players')和控制台里的集合名称完全一致,有没有大小写或拼写失误
内容的提问来源于stack exchange,提问作者Juno
相关产品推荐
相关产品推荐

