2017-09-15 71 views
1

我将数据{id: "abc123", text: "sometext"}发布到节点API。从组件发布与action电话:不允许从节点读取帖子

export function addTextToAPI(inputData) { 
    return(dispatch) => { 
     console.log(inputData), 
     dispatch(addText(inputData)) 
     fetch(myapi, { 
      headers: { 
       'Accept': 'application/json', 
       'Content-Type': 'application/json' 
      }, 
      method: 'POST', 
      data: inputData 
     }) 
     .then(res => res.json()) 
    } 
} 

的console.log(inputData)是{id: "abc123", text: "sometext"}

节点:

var express = require('express'); 
var bodyParser = require('body-parser'); 

var app = express(); 

app.use(bodyParser.json()); 

app.post('/addtest', (req, res) => { 

    console.log(req.body);  // <= returns blank object {} 

    console.log(req.body.data); // <= returns undefined 

    console.log(req.query);  // <= returns blank object {} 

    console.log("test added");  

}); 


app.listen(3000); 

我希望能够读取inputDatareq。我怎么做?我希望能够阅读req中的inputData。我怎么做?

+0

我也试过'JSON.stringify(inputdata)',但它不工作。 – Somename

+0

什么是您的内容类型请求标头? – Phix

+0

@Phix ..更新了问题中的'fetch'。请看一看。 – Somename

回答

3

要发布数据,你需要传递一个body参数来获取。

这应该工作:

export function addTextToAPI(inputData) { 
    return(dispatch) => { 
     console.log(inputData), 
     dispatch(addText(inputData)) 
     fetch(myapi, { 
      headers: { 
       'Accept': 'application/json', 
       'Content-Type': 'application/json' 
      }, 
      method: 'POST', 
      body: JSON.stringify(inputData) 
     }) 
     .then(res => res.json()) 
    } 
} 
+0

传递'body'不起作用。现在我甚至没有从节点获取任何'控制台日志'。改回''数据'控制台日志正在工作。我通过'body'的东西根本不叫节点。 – Somename

+1

尝试'JSON.stringify' inputData'并将其作为正文 – mkhanoyan

+0

传递! 'JSON.stringify'做了诀窍。为什么我需要添加'body'并且不能像其他'param'那样传递它? – Somename