如何在NodeJS中从客户端获取JSON响应?

dauxcl2d  于 11个月前  发布在  Node.js
关注(0)|答案(1)|浏览(106)

我想知道如何从客户端成功地检索NodeJS中的JSON响应,我的目标是获得Google Compute Engine项目的示例列表。
服务器代码

// Listar las máquinas virtuales a las que tiene acceso un usuario cuyo ID es "userId"
app.get('/vms_client/:userId/list', (req,res) => {
  let instances = new Map();  

  listVM(instances).then(() => {
    //console.log(instances);
    res.json(instances); 
    console.log("Listado de máquinas devuelto")
  }
  ).catch((e) => {
    console.log(e);
    res.status(500).json({ error: e })
  })

})

字符串
客户端代码

function getInstances(userId) {
    let instances = new Map();
    fetch(APILINK + userId + "/list", {method: 'GET'})
    .then(response => {
        if (!response.ok) {
            throw new Error(`HTTP error! Status: ${response.status}`);
        }
        response.json();
    })
    .then(function(data) {      
        console.log(data);
        instances = data; 
    })
    .catch(error => {
        console.error('Error:', error);
    });
    return instances;    
}


在服务器上,在“console.log(instances)"中,在“res.json(instances)"之前,“instances”对象显示为一个Map,带有现有示例的示例ID和示例名称。我不明白为什么客户端会得到一个未定义的JSON对象。
我在服务器里输入了快递和快递。
希望有人能给予点线索。
谢谢

pinkon5k

pinkon5k1#

您试图在收到API响应之前使用示例。您需要使用JavaScript await方法进行相同的操作。

async function getInstances(userId) {
    let instances = new Map();
    try {
        instances = await fetch(APILINK + userId + "/list", { method: 'GET' });
    } catch (error) {
        throw new Error(`HTTP error! Status: ${error.message}`);
    }
    return instances;
}

字符串

相关问题