Firebase云函数调用是如何计数的



我的Firebase Cloud函数程序中有很多函数。但我不确定调用是如何计数的。我这样问是为了尽可能减少我的调用。

首先,我有一个功能:

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()和so 1保存或检索数据,并调用如下函数:

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>
})

现在让我们明确一点,当使用.onCreate()方法在数据库中使用functionOne()创建某些节点时,会执行functionOnCreate()

但是,这一次它花费了我2调用好吧,我很清楚这是因为functionOnCreate()被firebase函数调用,所以这可能是原因

但如果我通过手动调用functionTwo()这样的函数来在数据库上执行任务。那么它会让我免于一些额外的函数调用吗?

  • 调用某个云函数的次数将向您收费。在您的第二个代码片段中,您只有一个Cloud函数。此Cloud函数内部对其他常规JavaScript函数的调用不是收费操作
  • 您将根据代码运行的时间以及在此期间分配的内存来收费。调用多个常规函数将增加代码运行的时间,并可能增加所需的内存
  • functions.auth.user().onCreate触发的云函数中执行额外的数据库写入确实可以防止对functions.database.ref('/path').onCreate(触发的云功能收费。不过,我建议您对调用次数进行一些计算,因为调用次数很少是其成本的主要因素

相关内容

  • 没有找到相关文章

最新更新