Firestore数据库中无法访问两个子集合中的一个(React环境)
问题排查与解决方案
针对你遇到的Firestore子集合读取问题,按以下步骤排查:
检查Firestore安全规则
确认规则是否允许读取to do list子集合。默认规则可能仅对认证用户开放,或未覆盖该子集合。可以临时修改规则(仅开发环境测试用):match /{document=**} { allow read, write: if true; }测试通过后,再调整为符合生产环境的安全规则。
验证子集合文档的字段完整性
代码中使用了orderBy('queryPreference'),如果to do list下的文档缺少该字段,Firestore会过滤掉这些文档,导致返回空数据。可以先移除排序条件测试:const q = query(collection(db, `lists/my lists/${currentList}`));若能获取数据,再给
to do list的所有文档补全queryPreference字段。确认子集合名称的准确性
Firestore集合名区分大小写和空格,检查currentList的值是否与控制台中子集合的名称完全一致(包括空格、大小写)。可以在getData函数开头打印变量值验证:console.log('当前子集合:', currentList);添加错误捕获逻辑
当前代码未处理onSnapshot的错误,可能存在隐藏异常。添加错误回调查看具体问题:onSnapshot(q, (snapshot) => { // 现有数据处理逻辑 }, (error) => { console.error('读取数据出错:', error); });修复变量声明问题
代码中firestoreList和firestoreIds未用let/const声明,属于全局变量可能导致逻辑异常,修改为函数内局部变量:const getData = () => { let firestoreList = []; let firestoreIds = []; // 剩余逻辑 };
内容的提问来源于stack exchange,提问作者chylinski
相关产品推荐
相关产品推荐

