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

如何在React Native中获取Firestore的所有子集合?

获取Firestore文档的所有子集合列表

Firestore默认不会主动展示文档的子集合,需要通过专门的API来获取,以下是不同开发环境的实现方式:

Web/Node.js环境

使用listCollections()方法异步获取子集合列表:

// 已初始化Firestore实例前提下
const db = firebase.firestore();

async function fetchSubcollections(docPath) {
  const docRef = db.doc(docPath);
  const collections = await docRef.listCollections();
  // 提取所有子集合的ID
  const subcollectionIds = collections.map(col => col.id);
  console.log("子集合列表:", subcollectionIds);
  return subcollectionIds;
}

// 调用示例,对应你的文档路径
fetchSubcollections("Chat/0NzkNYBCqrVsUfORWksdc8bMj7J2");

Android环境(Kotlin)

val db = Firebase.firestore
val targetDocRef = db.collection("Chat").document("0NzkNYBCqrVsUfORWksdc8bMj7J2")

targetDocRef.listCollections()
    .addOnSuccessListener { collections ->
        val subcollectionIds = collections.map { it.id }
        Log.d("Firestore", "子集合列表:$subcollectionIds")
    }
    .addOnFailureListener { e ->
        Log.e("Firestore", "获取子集合失败", e)
    }

iOS环境(Swift)

let db = Firestore.firestore()
let targetDocRef = db.collection("Chat").document("0NzkNYBCqrVsUfORWksdc8bMj7J2")

targetDocRef.getCollections { collections, error in
    if let error = error {
        print("获取子集合失败:\(error.localizedDescription)")
        return
    }
    guard let collections = collections else { return }
    let subcollectionIds = collections.map { $0.id }
    print("子集合列表:\(subcollectionIds)")
}

注意事项

  • listCollections()是异步操作,必须通过回调或异步语法处理返回结果
  • 该方法仅返回目标文档下的一级子集合,不会递归获取更深层级的集合
  • 需确保Firestore安全规则允许读取目标文档的子集合元数据,否则会触发权限错误

内容的提问来源于stack exchange,提问作者Abdul Saboor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:16:14