Firebase无法从部分集合获取文档,Users集合返回空数组
Firebase 获取Users集合返回空列表问题
- 调用Firebase获取
Users集合所有文档时返回空列表[],但Admins集合可正常获取数据 Users集合实际存在文档(附图)- 当前仅能从无嵌套集合获取数据,部分集合无法读取文档
调用代码
this._fs .collection(FBMainCollection.Users) .get() .subscribe((usr) => { const data = usr.docs.map((e) => e.data()); console.log(data); });
可能的原因及解决方法
- 权限规则限制:检查Firebase Firestore安全规则,确认
Users集合配置了正确的读取权限。比如当前规则可能仅开放了Admins集合的读取权限,或Users的规则添加了未满足的读取条件。
测试用规则示例(上线需替换为符合业务的权限逻辑):rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /Users/{user} { allow read: if true; allow write: if request.auth.uid == user; } match /Admins/{admin} { allow read, write: if request.auth != null; } } } - 集合名称不匹配:确认
FBMainCollection.Users的取值与Firebase控制台中的集合名称完全一致(Firestore集合名称大小写敏感),比如控制台是users但代码中是Users会导致无法定位集合。 - 嵌套集合定位错误:如果
Users是某个父文档下的子集合,直接调用.collection(FBMainCollection.Users)无法读取,需要先定位到父文档再获取子集合:// 示例:获取父文档下的嵌套Users集合 this._fs .collection('ParentCollection') .doc('targetParentDocId') .collection(FBMainCollection.Users) .get() .subscribe(...) - 初始化时机问题:若代码在组件初始化阶段执行,可能Firebase还未完成初始化,需确保在
FirebaseApp初始化完成后再调用集合读取方法。
内容的提问来源于stack exchange,提问作者Dilip Kumar
相关产品推荐
相关产品推荐

