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

Firestore无法读取新建集合数据的问题求助

新集合Firestore查询无返回数据问题

刚创建的Firestore新集合执行查询时无法返回任何数据,调用获取文档数量的函数后,日志始终输出0。但在Firebase控制台执行完全相同的查询能正常返回结果,旧集合执行相同逻辑也没问题。该查询函数已在OnInit()中调用,Firestore规则配置如下。

查询代码

getNumberOfFollowers () {
  CollectionRef2.path(path: 'followers').doc(currentUser).collection('userFollowers').snapshots().listen((value) {
   numberOfFollowers.value = value.docs.length;
   log(value.docs.length.toString(),name: 'numberOfFollowers');
  });
}

Firestore规则

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
allow read, write: if request.auth != null;  
    }
  }
}

排查与解决思路

  • 校验用户ID与路径正确性
    确认currentUser变量是否正确获取到当前用户的UID,有没有未初始化或拼写错误的情况。打印完整集合路径到日志,和控制台的路径对比,确保大小写、拼写完全一致(Firestore路径区分大小写)。

  • 确保Auth初始化完成后再查询
    OnInit()阶段可能用户认证还未完成,导致currentUser为空,查询了不存在的路径。可以将查询逻辑移到Auth状态监听回调中:

    FirebaseAuth.instance.authStateChanges().listen((user) {
      if (user != null) {
        currentUser = user.uid;
        getNumberOfFollowers();
      }
    });
    
  • 排查本地缓存同步问题
    新集合的数据可能还未同步到本地缓存,可尝试直接从服务器获取数据测试:

    CollectionRef2.path(path: 'followers').doc(currentUser).collection('userFollowers')
      .get(GetOptions(source: Source.server))
      .then((value) {
        log(value.docs.length.toString(), name: 'numberOfFollowers');
      });
    
  • 检查变量是否被意外覆盖
    确认numberOfFollowers是正确的可观测变量(如Flutter的ValueNotifier),排查是否有其他代码逻辑在查询后覆盖了它的值。

内容的提问来源于stack exchange,提问作者user21053481

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:00:05