Node.Js从POST请求获取数据

时间:2019-07-17 19:57:07

标签: node.js swift firebase google-cloud-functions stripe-payments

我正在使用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请求

1 个答案:

答案 0 :(得分:1)

您的客户代码正在尝试调用callable function,但是您的函数定义为HTTP type function。他们是不同的东西。您不能使用Functions SDK调用常规HTTP函数。

如果要使用Functions SDK调用函数,则需要使用onCall而不是onRequest对其进行定义,如documentation for callable functions所示。或者,如果您不希望后端有可调用对象,则需要使用HTTP客户端库调用常规HTTP函数。