Flutter读取Firestore集合遇permission-denied错误求助
解决Firestore权限拒绝问题
核心问题:安全规则路径匹配错误
你当前的规则仅匹配了trainers集合路径,但Firestore的安全规则默认作用于文档级别。当执行集合查询时,系统会校验集合下每一个文档的权限,而非集合本身的权限。之前的规则仅允许读取集合元数据(比如集合是否存在),无法读取文档内容,因此触发权限拒绝。
修正后的安全规则
使用文档通配符{doc}匹配trainers集合下的所有文档:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /trainers/{doc} { allow read: if true; } } }
额外检查项
- 确认
firebaseDb是正确的Firestore实例,通常应为FirebaseFirestore.instance,避免实例初始化错误 - 确保规则修改后已在Firebase控制台点击「发布」按钮生效
- 验证查询代码语法:Dart中
then的回调无需用花括号包裹(若用花括号需保证语法正确),可调整为:
FirebaseFirestore.instance.collection("trainers").get().then((value) { print(value.docs); });
内容的提问来源于stack exchange,提问作者alfietap
相关产品推荐
相关产品推荐

