【问题标题】:Firebase Firestore: get generated ID of document (Python)Firebase Firestore:获取生成的文档 ID(Python)
【发布时间】:2019-11-15 10:56:43
【问题描述】:
我可以创建一个新文档(使用自动生成的 ID),并像这样存储对它的引用:
my_data = {"key": "value"}
doc_ref = db.collection(u'campaigns').add(my_data)
我可以像这样访问数据本身:
print (doc_ref[0]) # prints {"key": "value"}
但是当我尝试访问 doc_ref ID 时,我无法:
# All of these throw attribute errors
doc_ref.get()
doc_ref.data()
doc_ref.id
There are other posts which suggest how to do this in Javascript,但没有一个适用于 Python SDK!
如何访问我创建的文档的生成 ID?
【问题讨论】:
标签:
python
firebase
google-cloud-platform
google-cloud-firestore
【解决方案1】:
文档不清楚,但我终于让它工作了:
doc_ref = db.collection(u'campaigns').document()
doc_ref.set(my_data)
print(doc_ref.id)
【解决方案2】:
在 Python 上保存后获取 ID:
这将返回一些 id,例如 wlJQKyVDsIIpX0x3NBmt
doc_ref = db.collection('promotions').add(data)
return doc_ref[1].id
【解决方案3】:
您甚至可以在调用 set 方法之前从文档中获取 id
doc_ref = db.collection(u'campaigns').document()
id = doc_ref.id
然后做保存:
doc_ref(my_data)
【解决方案4】:
文档对此非常有限,但我通过反复试验设法弄明白了。
如果您想像问题所示那样使用add 方法,而不是文档引用和set 方法,请尝试:
my_data = {"key": "value"}
response = db.collection(u'campaigns').add(my_data)
id = response[1].id
data = response[1].get().to_dict()
使用 add 方法时的 Firestore 响应包含一个元组:
-
DatetimeWithNanoseconds 对象 - 包含文档的创建时间
- Firestore 文档引用包含
id 和文档快照,您可以通过链接get() 和to_dict() 从中提取文档数据。