Firebase Firestore:获取生成的文档 ID(Python)
Posted
技术标签:
【中文标题】Firebase Firestore:获取生成的文档 ID(Python)【英文标题】:Firebase Firestore: get generated ID of document (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?
【问题讨论】:
【参考方案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()
从中提取文档数据。
【讨论】:
以上是关于Firebase Firestore:获取生成的文档 ID(Python)的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Firebase Firestore 获取数据并将其存储在列表中以在颤振小部件中使用?
如何在 Firestore 中获取生成的文档 ID,然后将子集合添加到其中?
如何使用 Firebase Firestore 获取子集合? [复制]
Firestore/Firebase 无法从文件夹中获取图像