如何在 Firebase Cloud 函数中调用导出的 https Firebase Cloud 函数?

Dev*_*ter 5 javascript firebase google-cloud-functions

我当前有一个从客户端调用的函数,现在我还需要从 Firebase Cloud Functions 调用它。

我需要调用的函数的语法是

exports.querySomeAPI = functions.https.onCall((data)=>{
    //Does work and returns stuff
});
Run Code Online (Sandbox Code Playgroud)

我从客户端调用它

var querySomeAPI = firebase.functions().httpsCallable('querySomeAPI');
querySomeAPI({
    data: "data"
}).then(response => {console.log("Query Response is: ", response);});
Run Code Online (Sandbox Code Playgroud)

由于 firebase 没有在我的后端定义,我尝试从服务器端调用它

var querySomeAPI = admin.functions().httpsCallable('querySomeAPI');
querySomeAPI({
    data: "data"
}).then(response => {console.log("Query Response is: ", response);});
Run Code Online (Sandbox Code Playgroud)

并发现 admin.functions() 不存在。所以我尝试将其作为普通函数调用

querySomeAPI({
    data: "data"
}).then(response => {console.log("Query Response is: ", response);});
Run Code Online (Sandbox Code Playgroud)

以及其他一些方法都没有效果。我知道必须有一种方法可以从 Firebase 函数中调用导出函数,但到目前为止我尝试过的方法都不起作用。

有人知道如何做到这一点吗?

有关如何在客户端调用 https 可调用函数的链接

Dou*_*son 3

如果您尝试像这样直接从另一个函数调用一个函数,那么您会遇到很多麻烦(以及不必要的更大的账单)。您最好只创建一个普通的旧 JS 函数,您的两个 Cloud Functions 导出都可以彼此独立地共享。

请参阅:从另一个云函数调用云函数

  • 我不同意这个答案。虽然在许多情况下将所需的功能提取到共享库中可能就足够了,但远程调用“功能到功能”基本上是微服务背后的“整个”想法,并且通常有很好的理由这样做。例如,如果您的通用功能具有非常不同的资源需求(例如内存),那么对于所有需要调用该代码的客户端来说也不一定有意义,也需要最大化其内存。 (5认同)