我正在使用Firebase云功能。在iOS设备上,我部署了一个触发器以在Node.Js中运行云功能。在Xcode中-这是我的触发Cloud函数的客户端函数-我正在传递字典 data
func updateTermsOfServiceCloudCall(){
let data = [
"accountId": "acct_1Ew#######"
]
Functions.functions().httpsCallable("updateAccountWithTOA").call(data) { (result, error) in
}
现在在Node中,我正在运行此代码以部署到Firebase云
exports.updateAccountWithTOA = functions.https.onRequest((request, response) => {
const data = request.body;
const accoundId = data.accoundId;
stripe.accounts.update(
accoundId,
{
tos_acceptance: {
date: Math.floor(Date.now() / 1000),
ip: request.ip
}
},
)
});
我希望获得从我的iOS客户端传递过来的字典数据。但是,在Node中获取该数据时出现了问题。我以为 request.body 会给我数据,但是我想我错了,因为我遇到了这个错误。任何帮助或建议,将不胜感激。谢谢
错误:条纹:参数“ id”必须为字符串,但得到:未定义(在 向
POST /accounts/{id}
发送的API请求
答案 0 :(得分:1)
您的客户代码正在尝试调用callable function,但是您的函数定义为HTTP type function。他们是不同的东西。您不能使用Functions SDK调用常规HTTP函数。
如果要使用Functions SDK调用函数,则需要使用onCall而不是onRequest对其进行定义,如documentation for callable functions所示。或者,如果您不希望后端有可调用对象,则需要使用HTTP客户端库调用常规HTTP函数。