在我的程序中,我有大量的Firebase函数。但我不知道调用是怎么计算的。我是这样要求的,这样我就可以尽可能减少我的调用。
首先,我有一个功能:
export const fucntionOne = functions.auth.user().onCreate((user) => {
console.log('1 invocation used!!')
})当一个新用户加入时,这个函数将被执行,当然它将消耗我的1调用。
在提出这个问题之前,我做了几个实验,发现如果我使用另一个函数functionTwo并在第一个函数中调用它,如下所示:
export const fucntionOne = functions.auth.user().onCreate((user) => {
console.log('1 invocation used!!')
functionTwo()
})
function functionTwo(){
console.log('Second function worked. . .')
}这一次,我期望我的函数调用计数为2,但它只增加了1,这很好。
但是,假设我使用了一个与firebase-realtime-database有某种关系的函数,假设使用.onCreate() or .onDelete()之类的方法保存或检索数据,然后调用如下函数:
export const fucntionOne = functions.auth.user().onCreate((user) => {
console.log('1 invocation used!!')
})
export const functionOnCreate = functions.database
.ref('/path')
.onCreate((snapshot, context) => {
//Do any thing in the function
console.log(`functionOnCreate executed.`)
return <something>
})现在,让我们明确一下,当使用functionOnCreate()方法在数据库中使用functionOne()创建某些节点时,将执行.onCreate()。
但是,这一次它花费了我的2,好吧,我很清楚,这是因为functionOnCreate()是由firebase函数调用或调用的,所以这可能是原因。
但是,如果我通过手动调用函数(比如functionTwo() )来在数据库上执行任务的话。那它能让我免于额外的函数调用吗?
发布于 2020-04-20 14:38:32
functions.auth.user().onCreate触发的云函数中写入额外的数据库将确实防止functions.database.ref('/path').onCreate(触发云函数的费用。不过,我建议您对调用次数进行一些计算,因为调用计数很少是其成本的主要因素。https://stackoverflow.com/questions/61323989
复制相似问题