如何用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
相关产品推荐
相关产品推荐

