如何获取Firebase Firestore嵌套结构中users集合的全部文档ID
解决方案
问题原因
你现有代码的核心逻辑已经可以正确读取users集合下的所有文档ID,没有得到预期结果通常是两个原因导致:
- 你仅在遍历中打印了ID,没有将其收集整理为数组返回使用
- async/await 与
.then混用的写法,容易出现调用时未等待异步逻辑执行完成就取值,得到undefined的问题
优化后实现代码
const getAllUserIds = async () => { // 等待获取users集合下所有文档的查询快照 const querySnapshot = await firestore().collection("users").get(); // 遍历快照中的文档列表,提取所有文档ID组成数组 const userIdList = querySnapshot.docs.map(doc => doc.id); return userIdList; };
调用示例
因为是异步函数,需要通过.then或者await的方式获取最终的ID数组:
// 方式1:用.then获取结果 getAllUserIds().then(userIdList => { console.log(userIdList); // 输出格式符合要求:[user1, user2, ...] // 此处可编写后续使用ID数组的逻辑 }); // 方式2:在其他async函数内用await获取结果 const otherAsyncFunc = async () => { const userIdList = await getAllUserIds(); console.log(userIdList); }
注意事项
- 请先检查你的Firestore安全规则,确认你拥有
users集合的读取权限,权限不足会导致查询返回空结果 - 如果
users集合数据量较大,建议补充分页逻辑,避免一次性读取过多数据影响性能
内容的提问来源于stack exchange,提问作者HONG HONG Choy
相关产品推荐
相关产品推荐

