我想从另一个nodejs服务器或仅nodejs脚本的firebase调用云函数。
我的firebase函数是一个onCall函数。
我正在使用https://www.npmjs.com/package/firebase-admin与Firebase进行交互,但是它似乎没有调用云函数的方法...
我可以通过其他方式吗?喜欢http请求吗?
答案 0 :(得分:2)
如果要从服务器代码中调用可调用函数,则必须遵循其protocol documentation,以确保请求有效。
仅使用常规的HTTP类型函数可能会更容易。通过在另一个普通的JavaScript函数中共享通用代码,应该易于与可调用函数共享其逻辑。
答案 1 :(得分:1)
简而言之:您必须触发http事件。
当前,firebase确实支持两个调用选项。
如果您通读文档here和here,则始终必须有一些触发器。
并且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 您的后端本地和远程。