2017-07-30 68 views
2

从我的客户端,我正在使用这样的数据对我的Firebase node.js服务器上的webhook进行提取。Request.body是空的对象

const url = 'https://us-central1-<app>.cloudfunctions.net/addUserdata'; 
const data = { 
    firstName: 'John', 
    lastName: 'Doe', 
    email: '[email protected]' 
} 

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是一个空对象。我失踪或做错了什么?

回答

1

JSONFormDataBlob对象或字符串bodyRequest.body不期望JavaScript对象。

body: JSON.stringify(data) 
+0

就是这样,谢谢! – Thore

+1

@Thore请参阅['Request()'](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request)at _“注:体型只能是Blob BufferSource,FormData,URLSearchParams,USVString或ReadableStream类型,因此为了将JSON对象添加到负载中,需要对该对象进行字符串化。另请参阅[使用ReadableStream获取](https://stackoverflow.com/q/40939857/) – guest271314

0

POST要求你必须等待一个位将数据放入request.body

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

仍然得到一个空的物体 – Thore