为什么我要等待Promise而不是Express响应?

时间:2020-10-01 10:10:22

标签: javascript node.js express

我的代码,我是Express的新手。

app.get('/', (req, res) => {
   const name = req.query.name;
   const rank = req.query.rank;
   const headers = Object.entries(req.headers)
  .map(([key, value]) => `${key}: ${value}`);
  
res.json({ success: true, data : { name, rank } , headers : headers });
});

server = app.listen(3000);

const res = axios.get('http://localhost:3000?name=John Malone&rank=Captain');

console.log(res);

端子输出

Promise { <pending> }

我更改了代码,输出了数据

  data: {
    success: true,
    data: { name: 'John Malone', rank: 'Captain' },
    headers: [
      'accept: application/json, text/plain, */*',
      'user-agent: axios/0.20.0',
      'host: localhost:3000',
      'connection: close'
    ]
  }
}

axios.get('http://localhost:3000?name=John Malone&rank=Captain')
   .then(function(data) {
      console.log(data.data.name); // Data response from server
   });

显示未定义。

1 个答案:

答案 0 :(得分:1)

这里有两个部分:

  • 服务器部分是由节点(表达)编写的,您做对了
  • 客户端部分由axios请求

您得到Promise是因为Promise返回了axios.get('http://localhost:3000?name=John Malone&rank=Captain') .then(function(data) { console.log(data); // Data response from server }); (异步请求)。因此,在这种情况下,我想您想将数据记录到控制台。您应该执行以下操作:

{{1}}