从Node.js调用Firebase Cloud函数

时间:2019-05-28 14:38:21

标签: node.js firebase google-cloud-firestore google-cloud-functions firebase-admin

我想从另一个nodejs服务器或仅nodejs脚本的firebase调用云函数。

我的firebase函数是一个onCall函数。

我正在使用https://www.npmjs.com/package/firebase-admin与Firebase进行交互,但是它似乎没有调用云函数的方法...

我可以通过其他方式吗?喜欢http请求吗?

3 个答案:

答案 0 :(得分:2)

如果要从服务器代码中调用可调用函数,则必须遵循其protocol documentation,以确保请求有效。

仅使用常规的HTTP类型函数可能会更容易。通过在另一个普通的JavaScript函数中共享通用代码,应该易于与可调用函数共享其逻辑。

答案 1 :(得分:1)

简而言之:您必须触发http事件。
当前,firebase确实支持两个调用选项。

如果您通读文档herehere,则始终必须有一些触发器。
并且firebase接受http请求。
即使您使用示例1中的移动应用,在后台,firebase SDK也会发出http请求。

另一个选择是scheduled调用,但是从注释中可以看出,这不是您想要的。

答案 2 :(得分:0)

要调用本地运行 firebase emulators:start --only function,请在函数列表 http://localhost:4001/functions 中检查要调用的函数名称。

  await fetch('<HTTP-LOCAL-URL-YOU-PICKED-FROM-THE-LIST>', {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({data:{ /* YOUR JSON COMES HERE */ }})
  });

远程调用

  await fetch('http://us-central1-<MY_PROJECT_NAME>.cloudfunctions.net/<MY_FUNCTION_NAME>', {
    method: 'POST',
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({data:{ /* YOUR JSON COMES HERE */ }})
  });

它将分别 ping 您的后端本地和远程。