我有一个计划功能,该功能按小时将数据写入Firestore,还有一个onCreate
触发功能,用于侦听新添加到Firestore的任何文档。将文档添加到集合中时,onCreate
函数将被触发,然后执行Web抓取任务。网络抓取任务完成后,便会将更多数据写入文档中。
一切都很好,但是我遇到onCreate
函数的周期性函数超时。查看日志:
我观察到这些函数超时仅在大约30多个onCreate
被触发时发生,即一次将30多个文档全部写入Firestore。否则,这些功能很可能会成功执行。
这是我将文档写入Firestore的方式:
function addToFirestore(item) {
let ref = firebase.db.collection('items')
let id = ref.doc().id
return ref.doc(id).set(item)
}
//Usage
//Here, items.length ranges between 20 to 200
let promises = items.map(item => addToFirestore(item))
return Promise.all(promises)
这是onCreate
触发函数:
//onCreate listener
module.exports = functions.firestore.document('items/{itemId}').onCreate((snap, context) => {
let item = snap.data()
return scraper.start(item) //Webscraping task
})
Firestore可以使用的触发器数量是否有限制?如果是这样,我如何执行某种“批处理触发器”,以使其不处理大量的onCreate
触发器?