从另一个云function调用云function

我正在使用云端函数在免费的Spark层次上调用另一个云端函数。

有没有特殊的方法来调用另一个云端function? 或者你只是使用标准的HTTP请求?

我曾尝试直接调用其他函数,如下所示:

exports.purchaseTicket = functions.https.onRequest((req, res) => { fetch('https://us-central1-functions-****.cloudfunctions.net/validate') .then(response => response.json()) .then(json => res.status(201).json(json)) }) 

但是我得到错误

FetchError:请求https:// us-central1-functions- ****。cloudfunctions.net/validate失败,原因:getaddrinfo ENOTFOUND us-central1-functions – *****。cloudfunctions.net us-central1-functions – ***** cloudfunctions.net:443

这听起来像firebase阻止连接,尽pipe它是一个谷歌拥有,因此它不应该被locking

Spark计划只允许向Google拥有的服务发送出站networking请求。

如何使用云端函数调用另一个云端函数?

您不需要通过全新的HTTPS调用来调用某些共享function。 您可以简单地将常见的代码抽象成一个常规的JavaScript函数,它被任何一个调用。 例如,你可以像这样修改模板helloWorld函数:

 var functions = require('firebase-functions'); exports.helloWorld = functions.https.onRequest((request, response) => { common(response) }) exports.helloWorld2 = functions.https.onRequest((request, response) => { common(response) }) function common(response) { response.send("Hello from a regular old function!"); } 

这两个函数将完成相同的事情,但具有不同的端点。