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

如何在.NET中获取Firebase Firestore的所有根级集合

获取Firebase Firestore根级集合的.NET实现方案

方法一:使用Firebase Admin SDK

Firebase Admin SDK提供了直接获取根集合的异步方法,以下是完整实现步骤:

  1. 确保已安装必要的NuGet包:FirebaseAdmin 和 Google.Cloud.Firestore
  2. 初始化SDK并获取集合列表:
using FirebaseAdmin;
using Google.Apis.Auth.OAuth2;
using Google.Cloud.Firestore;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 初始化Firebase Admin SDK(仅需执行一次)
        if (FirebaseApp.DefaultInstance == null)
        {
            FirebaseApp.Create(new AppOptions
            {
                Credential = GoogleCredential.FromFile("你的服务账号密钥路径.json")
            });
        }

        var db = FirestoreDb.DefaultInstance;
        // 获取所有根级集合
        var rootCollections = await db.ListRootCollectionsAsync();
        
        // 遍历输出集合名称
        foreach (var collection in rootCollections)
        {
            Console.WriteLine($"根集合ID:{collection.Id}");
        }
    }
}

方法二:调用Firestore REST API

如果更倾向于用REST请求,可通过Firestore官方REST接口实现,需用服务账号认证:

using Google.Apis.Auth.OAuth2;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        // 加载服务账号并获取访问令牌
        var credential = GoogleCredential.FromFile("你的服务账号密钥路径.json")
            .CreateScoped("https://www.googleapis.com/auth/cloud-platform");
        var accessToken = await credential.UnderlyingCredential.GetAccessTokenForRequestAsync();

        // 发送GET请求获取根集合
        using var httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
        
        var projectId = "你的Firebase项目ID";
        var apiUrl = $"https://firestore.googleapis.com/v1/projects/{projectId}/databases/(default)/collections";
        
        var response = await httpClient.GetAsync(apiUrl);
        response.EnsureSuccessStatusCode(); // 确保请求成功

        // 解析返回的JSON数据
        var jsonContent = await response.Content.ReadAsStringAsync();
        var result = JsonSerializer.Deserialize<JsonElement>(jsonContent);
        
        // 遍历输出集合名称
        foreach (var collection in result.GetProperty("collections").EnumerateArray())
        {
            Console.WriteLine($"根集合ID:{collection.GetProperty("id").GetString()}");
        }
    }
}

注意事项

  • 服务账号需配置Cloud Datastore Viewer或更高权限,确保能访问Firestore数据
  • 替换代码中的服务账号密钥路径、项目ID为你自己的实际信息

内容的提问来源于stack exchange,提问作者Mohammad Amirdoust

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 12:47:43