我可以从 1 个云函数写入多少个 Firestore 集合和文档?

How many Firestore collections and documents can I write to from 1 cloud function?

所以我有一个 Webhook 可以将 JSON 有效载荷传送到我的云函数 URL。

在该云功能中,将 JSON 写入我的 Cloud Firestore 有哪些限制?

我无法将我的 JSON 负载全部转储到集合中的一个文档,因此我需要将其全部解析到不同的字段。

所以我的云函数看起来像:

await admin.firestore().collection("collection1").doc(doc1).set({
field1: data.fieldFromJson1
})
await admin.firestore().collection("collection1").doc(doc1).collection("sub-collection1").doc(doc2).set({
field2: data.fieldFromJson2
})

我可以在 1 个云函数中执行此操作还是需要 2 个函数?

我有 100 JSON 行要解析整个云 firestore,所以这个例子非常简单。

参考资料和文档:

https://cloud.google.com/functions/docs

https://github.com/firebase/functions-samples

技术上没有任何限制,只要您保持在 documentation you should be fine. If it's a single webhook that has all the data then you can write all documents in a single go. You can either use Promise.all() or Batch Writes 中定义的速率限制(如果最多写入 500 个文档)。

// parse data and map an array as shown below 
const promises = [
  admin.firestore().collection("collection1").doc(doc1).set({
    field1: data.fieldFromJson1
  }),
  admin.firestore().collection("collection1").doc(doc1).collection("sub-collection1").doc(doc2).set({
    field2: data.fieldFromJson2
  })
]

await Promise.all(promises)
// any other processing

res.status(200).end() // terminate the function

如果您预计需要花费一些时间来解析大量数据,请确保为该函数设置更高的超时时间(默认为 60 秒)。