如何在React Native Android中获取Firebase的集合名称?
解决React Native中获取Firebase Firestore指定格式集合名称的问题
问题分析
你当前的代码应该是在读取集合内的文档数据(返回itemName和itemPrice),而非获取集合本身的名称列表。直接访问collectionData[0]报错,是因为collectionData是文档内容数组,并不包含集合名称信息。
解决方案
要获取Firestore中所有形如DD-MM-YYYY格式的集合名称,需要使用Firestore提供的listCollections()方法枚举集合,再通过正则表达式过滤符合格式的名称。
完整代码示例
import { initializeApp } from 'firebase/app'; import { getFirestore, listCollections } from 'firebase/firestore'; // 初始化Firebase(替换为你的项目配置) const firebaseConfig = { apiKey: "YOUR_API_KEY", authDomain: "YOUR_AUTH_DOMAIN", projectId: "YOUR_PROJECT_ID", storageBucket: "YOUR_STORAGE_BUCKET", messagingSenderId: "YOUR_MESSAGING_SENDER_ID", appId: "YOUR_APP_ID" }; const app = initializeApp(firebaseConfig); const db = getFirestore(app); // 获取符合日期格式的集合名称 const fetchCollectionNames = async () => { try { // 获取根目录下的所有集合引用 const collections = await listCollections(db); // 匹配DD-MM-YYYY格式的正则表达式 const datePattern = /^\d{2}-\d{2}-\d{4}$/; // 过滤并提取符合格式的集合名称 const targetCollections = collections .map(collection => collection.id) .filter(id => datePattern.test(id)); console.log("目标集合名称:", targetCollections); return targetCollections; } catch (error) { console.error("获取集合名称失败:", error); return []; } }; // 在组件中调用示例(比如用useEffect) // useEffect(() => { // fetchCollectionNames(); // }, []);
关键说明
listCollections(db):获取Firestore根目录下的所有集合引用,每个引用的id属性就是集合名称。- 正则表达式
/^\d{2}-\d{2}-\d{4}$/:严格匹配DD-MM-YYYY格式的字符串,确保只筛选目标集合。 - 权限注意:确保Firebase权限规则允许读取集合元数据,测试阶段可临时设置宽松规则,生产环境需根据需求调整为严格权限。
内容的提问来源于stack exchange,提问作者user20966443
相关产品推荐
相关产品推荐

