# #firebase #google-cloud-platform #google-cloud-firestore #google-cloud-functions #webhooks
Вопрос:
Итак, у меня есть веб-крючок, который доставляет полезную нагрузку JSON на URL-адрес моей облачной функции.
В рамках этой облачной функции каковы мои ограничения для записи JSON в мой облачный магазин 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, поэтому этот пример очень упрощен.
Ссылки и документация:
Ответ №1:
Технически никаких ограничений нет, и пока вы придерживаетесь ограничений по тарифам, определенных в документации, с вами все будет в порядке. Если это один веб-справочник, содержащий все данные, то вы можете написать все документы за один раз. Вы можете использовать Promise.all()
или 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 секунд).