【问题标题】: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 响应包含一个元组:

        1. DatetimeWithNanoseconds 对象 - 包含文档的创建时间
        2. Firestore 文档引用包含id 和文档快照,您可以通过链接get()to_dict() 从中提取文档数据。

        【讨论】:

          猜你喜欢
          • 2021-03-29
          • 1970-01-01
          • 1970-01-01
          • 2018-09-02
          • 1970-01-01
          • 2020-04-22
          • 2021-07-20
          • 2018-09-03
          • 1970-01-01
          相关资源
          最近更新 更多