【问题标题】:import JSON file to google firestore using cloud functions使用云功能将 JSON 文件导入谷歌 Firestore
【发布时间】:2020-04-08 12:14:53
【问题描述】:

我是 GCP 和 Python 的新手。我的任务是通过 Python 使用谷歌云功能将 JSON 文件导入谷歌 Firestore。

请帮忙。

【问题讨论】:

  • 我确信您需要的一些作品已经在某处可用。你发现了什么,你到底错过了什么?
  • @MarCialR,其实我也是 GCP 和 python 的新手。因此,无法理解通过云函数执行导入所要编写的实际代码。
  • 你的文件有多大?你的文件格式是什么?您只想加载到 Firestore 中的一个 JSON 文档(只有一个文档)吗?或者您想拆分这个独特的文档?或者您的文件每行包含 1 个 json 文档(JSONL 格式)?告诉我们更多!

标签: google-cloud-platform google-cloud-firestore google-cloud-functions


【解决方案1】:

我可以使用以下代码实现此系统设置。发布供您参考:-

云功能代码

REQUIREMENTS.TXT(依赖)

`google-api-python-client==1.7.11
google-auth==1.6.3
google-auth-httplib2==0.0.3
google-cloud-storage==1.19.1
google-cloud-firestore==1.6.2`

MAIN.PY

from google.cloud import storage
from google.cloud import firestore
import json

client = storage.Client()``

def hello_gcs_generic(data, context):

print('Bucket: {}'.format(data['bucket']))
print('File: {}'.format(data['name']))

bucketValue = data['bucket']
filename = data['name']
print('bucketValue : ',bucketValue)
print('filename : ',filename)

testFile = client.get_bucket(data['bucket']).blob(data['name'])
dataValue = json.loads(testFile.download_as_string(client=None))
print(dataValue)

db = firestore.Client()

doc_ref = db.collection(u'collectionName').document(u'documentName')
doc_ref.set(dataValue)

【讨论】:

    【解决方案2】:

    Cloud functinos 是 google 提供的无服务器功能。云函数的美妙之处在于它会销毁,一旦执行完成,它会调用任何发生的触发器和自身。云功能是单一用途的功能。不仅是python,你还可以使用NodeJS和Go来编写云函数。您可以通过访问云功能快速入门(https://cloud.google.com/functions/docs/quickstart-console)非常轻松地创建云功能。

    您的任务是将 JSON 文件导入 google firestore。这部分你可以像任何普通的 python 程序一样使用 Firestore python 连接器并添加到云功能控制台或通过 gcloud 上传。这里仍然缺少触发部分。正如我提到的云功能是无服务器的。当附加触发器中发生任何事件时,它将执行。您在这里没有提到任何触发器(当您想要触发该功能时)。一旦您提供有关触发器的信息,我就可以提供有关解决方案的更多见解。

    【讨论】:

    • 感谢您提供详细信息。触发点是云存储桶中的 JSON 文件上传。你能帮我编写代码以通过python连接firestore并将其放置在云函数中吗?我已经到达直到触发云存储桶触发器上的云功能,然后读取 JSON 文件。现在的任务是连接 firestore 并将 JSON 数据转储到其中。谢谢!
    【解决方案3】:

    Ishank Aggarwal,您可以通过以下步骤将上述代码 sn-p 添加为云功能的一部分:

    1. https://console.cloud.google.com/functions/
    2. 使用函数名称创建函数,您的要求,选择运行时间为 python 并选择触发器作为您的 gcs 存储桶。

    创建后,如果您的存储桶发生任何变化,该函数将触发并执行您的代码

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-02
      • 2019-02-24
      • 2019-06-07
      • 2019-08-26
      • 1970-01-01
      • 2019-03-16
      • 2017-11-14
      • 1970-01-01
      相关资源
      最近更新 更多