You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 05:25:05