无法通过res.json发送JSON数据

时间:2019-09-12 22:48:29

标签: json reactjs express fetch

当我发送对JSON数据的获取请求时,它返回响应对象,但不返回数据本身。

不知道为什么

我尝试添加标题,对数据进行字符串化

我的Express服务器

const productData = require('./storeProducts.json');

app.use(cors());


app.get('/products', (req, res) => {
  res.json(JSON.stringify(productData));
});

app.listen(PORT, () => console.log(`Now listening on ${PORT}`));

我的提取请求

  const fetchProducts = async () => {
    const data = await fetch('http://localhost:3001/products');
    console.log(data)
  };

当我console.log接收到的数据而不是JSON对象时,即时通讯

响应{类型:“ cors”,网址:“ http://localhost:3001/products”,重定向:false,状态:200,确定:true,…} 身体: (...) bodyUsed:错误 标头:标头{} 好的:是的 重定向:false 状态:200 statusText:“确定” 类型:“ cors” 网址:“ http://localhost:3001/products原始:回复

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

您需要执行以下操作:

const fetchProducts = async () => {
let data = [];
await fetch('http://localhost:3001/products')
  .then(res => res.json())
  .then(response => {data = response;})
console.log(data)
};

当您使用fetch时,它将返回一个对象,并且res.json()方法从该对象中提取JSON数据并返回一个Promise,该Promise可用于对结果执行操作。例如,将数据映射到表格上,制作图形,图表,验证等。
希望这能解决您的问题。