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

如何用Python获取Firestore中events集合下的evtid文档ID?

问题分析与解决

问题原因

你的events集合里的evtid文档属于幽灵文档——这类文档仅存在子集合,但自身没有任何字段数据。Firestore的stream()方法只会返回实际包含数据的文档,仅靠子集合的存在不会让父文档被检索到,所以你的脚本没有输出。

解决方案

方案1:使用list_documents()方法

这个方法会返回集合下所有文档引用,包括幽灵文档,不管文档是否有数据。修改代码如下:

import firebase_admin
from firebase_admin import credentials
from firebase_admin import firestore

cred = credentials.Certificate('mycredentials.json')
app = firebase_admin.initialize_app(cred)
db = firestore.client()

# 使用list_documents()获取所有文档引用
docs_refs = db.collection("events").list_documents()

for doc_ref in docs_refs:
    print(doc_ref.id)

方案2:为evtid文档添加至少一个字段

如果业务允许,在创建users子集合的同时,给对应的evtid文档添加一个字段(比如created_at),确保文档实际存在:

# 创建evtid文档时添加字段
db.collection("events").document("evtid").set({"created_at": firestore.SERVER_TIMESTAMP})
# 之后再创建users子集合
db.collection("events").document("evtid").collection("users").add({"user_data": "xxx"})

这样后续使用stream()方法就能正常获取到evtid文档ID了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:48:29