Firestore中collection.get()无法获取Schedine集合文档的问题
解决Firestore无法获取Schedine集合文档列表的问题
可能的原因及解决方案:
1. 安全规则限制(最常见)
Firestore的安全规则很可能只允许读取Schedine下的in corso子集合,却没有授权读取Schedine本身的文档。
检查你的Firestore安全规则,确保添加对Schedine集合的读取权限:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { // 允许读取Schedine集合下的所有文档 match /Schedine/{docId} { allow read: if true; // 可根据实际需求替换为权限校验逻辑,比如request.auth != null // 保留对子集合的权限 match /in corso/{subDocId} { allow read: if true; } } } }
2. 添加错误排查代码
原代码没有错误捕获,无法知道请求失败的原因。修改代码加入异常处理,定位具体问题:
try { const ref1 = await firestore.collection("Schedine").get(); console.log(`共找到 ${ref1.size} 个文档`); ref1.forEach(doc => { console.log(doc.id); }); } catch (err) { console.error("获取集合文档失败:", err); }
如果是权限问题,控制台会输出Permission denied的错误信息。
3. 确认文档实例与环境一致性
确保你使用的firestore实例和读取子集合时的实例是同一个,避免因环境(如测试/生产)切换导致的集合访问错误。
4. 验证文档存在性
虽然你能访问子集合,但仍需确认Schedine下的目标文档在Firestore控制台中确实存在(即使是没有任何字段的“空文档”,collection.get()也应该能返回其ID)。
内容的提问来源于stack exchange,提问作者faccio
相关产品推荐
相关产品推荐

