You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 10:10:35