Firebase 可调用函数未接收参数

Posted

技术标签:

【中文标题】Firebase 可调用函数未接收参数【英文标题】:Firebase callable function not receiving arguments 【发布时间】:2019-01-22 12:29:04 【问题描述】:

在 typescript 上实现一个简单的函数来调用 Firebase 可调用函数不起作用。 使用 firebase-tools@4.0.3 -g, firebase-functions@2.0.5, firebase@5.3.1

Firebase 可调用函数:

import * as functions from "firebase-functions";

exports.httpsOnCall = functions.https.onCall((data, context) => 
  console.log(data);
  return data;
);

部署正确

在webapp中调用函数:

const a = Firebase.functions.httpsCallable("httpsOnCall");
  a.call( a: 1, b: "testing", c: true ).then(result => 
    console.log(result);
  );

Firebase 对象初始化:

import * as firebase from "firebase";

const config = 
  apiKey: "asdasdasd",
  authDomain: "APPNAME.firebaseapp.com",
  databaseURL: "https://APPNAME.firebaseio.com",
  projectId: "APPNAME",
  storageBucket: "APPNAME.appspot.com",
  messagingSenderId: "123456"
;
firebase.initializeApp(config);
const Firebase = 
   functions: firebase.functions()

来自 firebase 的日志:

null

来自 webapp 的日志:

data: null

即使填充了上下文变量,数据似乎也没有到达 httpsOnCall 函数。

【问题讨论】:

【参考方案1】:

不用a.call,只需调用带有参数的函数a,如下所示:

const a = Firebase.functions.httpsCallable("httpsOnCall");
  a( a: 1, b: "testing", c: true ).then(result => 
    console.log(result);
  );

有关示例,请参阅 guide。

【讨论】:

菜鸟错误。我看到了调用方法,立即认为这就是我要找的。非常感谢!【参考方案2】:
//imports
const firebase = require("firebase");
require("firebase/functions");


//call steatment
const a = firebase.functions().httpsCallable('httpsOnCall');
        a( a: 1, b: "testing", c: true )
            .then((result) => 
                console.log(result);
            )
            .catch((error) => 
                console.log(`error: $JSON.stringify(error)`);
        );

【讨论】:

以上是关于Firebase 可调用函数未接收参数的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 可调用函数 + CORS

Firebase 可调用云函数 CORS 错误

Firebase 可调用函数失败 CORS 重定向

Firebase可调用函数+ CORS

应用检查对 Firebase 可调用函数的不必要强制执行

使用 Firebase 可调用函数时如何检索用户的身份验证数据?