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 无法从文件夹中获取图像

渲染从 firebase firestore 获取的数组数据

如何使用 react-redux-firebase 从 firestore 获取子集合