【问题标题】:Request.body is empty objectRequest.body 是空对象
【发布时间】:2018-01-06 06:17:38
【问题描述】:

我正在从我的客户端将这样的数据提取到我的 Firebase node.js 服务器上的 webhook。

const url = 'https://us-central1-<app>.cloudfunctions.net/addUserdata';
const data = {
  firstName: 'John',
  lastName: 'Doe',
  email: 'john.doe@email.com'
}

const request = new Request(url, {
  method: 'POST',
  body: data,
  mode: 'no-cors',
  headers: new Headers()
});

fetch(request)
.then(function(result) {
    console.log(result);
})

我现在只是想像这样捕获数据。

exports.addUserdata = functions.https.onRequest((req, res) => {
  console.log(req.body);
  res.send(200);
});

不幸的是,我的 req.body 是一个空对象。我错过了什么或做错了什么?

【问题讨论】:

    标签: javascript node.js google-cloud-functions fetch-api


    【解决方案1】:

    POST 请求时,您必须稍等片刻才能将数据输入request.body

        var body = '';
        req.on('data',function(data) { body += data; });
        req.on('end', function(data) {
            req.body = JSON.parse(body);
        });
    

    【讨论】:

    • 仍然得到一个空对象
    【解决方案2】:

    JSONFormDataBlob 对象或字符串传递给bodyRequest.body 不需要 JavaScript 对象。

    body: JSON.stringify(data)
    

    【讨论】:

    • @Thore See Request() at "注意:正文类型只能是BlobBufferSourceFormDataURLSearchParamsUSVString 或 @987654335 @ 类型,因此要将JSON 对象添加到您需要对该对象进行字符串化的有效负载。”,另请参阅Fetch with ReadableStream
    猜你喜欢
    • 2017-04-13
    • 2017-02-28
    • 2015-09-07
    • 2019-02-06
    • 2023-03-08
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多