【问题标题】:Difficulties with posting data to Google Firebase HTTP Functions将数据发布到 Google Firebase HTTP 函数的困难
【发布时间】:2019-04-08 22:39:30
【问题描述】:

我正在尝试将一些变量作为req.body 的一部分发布到 Firebase 云函数。我正在使用现代fetch() 语法如下:

const { licenseCode } = this.state;
fetch('https://myAPI.com/inputLicense', {
  method: 'POST',
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ licenseCode })
})

这是我的云函数的外观:

exports.inputLicense = functions.https.onRequest((request, response) => {
  // const { licenseCode } = request.body
  console.log(request.get('content-type'))
  console.log('query', request.query)
  console.log('body', request.body)
})

不幸的是,在第一行的情况下,上述所有日志记录都会产生空对象或未定义。在通常的 Express 设置中,我知道我需要使用:

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

但不知道如何使用云功能。谷歌在他们的文档中声称他们会根据标题自动解析我的请求,但我就是无法让它工作。

欢迎任何帮助,提前致谢。

【问题讨论】:

  • 您的 lambda 代码是正确的。您是否确定您发送的对象中确实存在某些内容?
  • 我的另一个问题是:request.rawBody 中有什么东西
  • rawBody 在我的情况下是未定义的@MichaelMcQuade

标签: node.js express google-cloud-platform google-cloud-functions


【解决方案1】:

看起来您解决了问题,但对于其他遇到问题的人。就我而言,问题是在不包含正文的cors preflight request 上触发的firebase 云功能。

我通过在 fetch 调用中删除 application/json 内容类型并在云函数中手动解码 json 主体来解决它

// on the client
fetch(functionURL + '/' + name, {
    body: JSON.stringify({abc: 123}),
    method: 'POST',
    mode: 'cors',
})

// on the server
functions.https.onRequest(async (req, res) => {
    const {abc} = JSON.parse(req.body)
    res.set('content-type', 'application/json')
    res.set('Access-Control-Allow-Origin', '*')
    res.status(200)
    res.send({result: abc})
})

【讨论】:

    【解决方案2】:

    我做了一些测试,显然问题来自对象解构。

    以下应该有效:

    const obj = { licenseCode: this.state };
    fetch('https://myAPI.com/inputLicense', {
      method: 'POST',
      headers: {
        "Content-Type": "application/json"
      },
      body: JSON.stringify(obj)
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 2020-08-12
      • 2020-11-02
      • 1970-01-01
      • 2021-01-10
      • 1970-01-01
      • 2019-11-07
      • 2019-02-21
      相关资源
      最近更新 更多