如何在firebase函数中将参数传递给cors

Posted

技术标签:

【中文标题】如何在firebase函数中将参数传递给cors【英文标题】:How do I pass parameters to cors within a firebase function 【发布时间】:2020-03-14 08:18:41 【问题描述】:

我正在尝试将基本字符串参数发送到 firebase 函数中的 cors。但是,我无法找到一种方法来传递参数,而不会出现 cors 并阻止我的请求。

const functions = require('firebase-functions');
const cors = require('cors')(origin:true)

exports.sendMail = functions.https.onRequest((request, response) => 
  cors(request, response,() =>
    var variableA = request.body.A
    var variableB = request.body.B
    var variableC = reques.body.C

    response.send("Function run completed")
  )

正在使用 axios.get() 调用 Firebase 函数

axios.get('someURL', 
            A:variableA,
            B:variableB,
            C:variableC
        )
        .then(res => 
            const output = res.data;
            console.log("message output = " + output)
        )

请求和 firebase 功能按预期正常工作。但我不知道如何正确传递参数。有人知道怎么做吗?

重要的编辑! - 我应该补充一点,上面代码中显示的方法导致参数未定义。如果我尝试以任何方式从 axios 调用中引用请求和响应对象(第一对请求和响应对象),那就是 cors 错误突然爆发的时候。

【问题讨论】:

“我应该补充一点,上面代码中显示的方法导致参数未定义”->哪个方法?如果您执行...cors(request, response,() => var variableA = request.body.A ... console.log(variableA);...,您会在 CF 控制台中看到什么? 我相信这就是上面代码中显示的内容,导致变量未定义。如果我错了,请纠正我。 我认为您的部分问题是您正在 req.body 中查找 GET 请求的参数。 GET requests 不应该有正文(仅查询参数),虽然我不确定这是问题的原因,但它可能没有帮助。我建议使用POST 或使用req.query 查询参数。 是的,这对我来说是一个糟糕的错误。非常感谢! 【参考方案1】:

您应该使用axios.post():通过执行axios.get()body 不会传递给云函数。

axios.post('someURL', 
            A:variableA,
            B:variableB,
            C:variableC
        )
        .then(res => 
            const output = res.data;
            console.log("message output = " + output)
        )

【讨论】:

是的,这是我的一个糟糕的错误。谢谢你帮我解决这个问题

以上是关于如何在firebase函数中将参数传递给cors的主要内容,如果未能解决你的问题,请参考以下文章

如何在 addTarget #Selector 中将静态参数传递给 UIRefreshControl() 的本地函数

如何在一个条目中将RGB作为单独的参数传递给函数

如何在 Laravel 8.x 中将附加参数传递给验证器-> 后函数?

如何在反应测试库中将参数传递给 getByText?

如何在 redux 工具包中将参数传递给 createAsyncThunk?

如何在 PHP 中将单个附加参数传递给 array_map 回调?