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
相关产品推荐
相关产品推荐

