我可以从 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,所以这个例子非常简单。
参考资料和文档:
技术上没有任何限制,只要您保持在 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 秒)。
所以我有一个 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,所以这个例子非常简单。
参考资料和文档:
技术上没有任何限制,只要您保持在 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 秒)。