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

dauxcl2d  于 2023-11-17  发布在  Node.js
关注(0)|答案(1)|浏览(176)

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

  1. // Listar las máquinas virtuales a las que tiene acceso un usuario cuyo ID es "userId"
  2. app.get('/vms_client/:userId/list', (req,res) => {
  3. let instances = new Map();
  4. listVM(instances).then(() => {
  5. //console.log(instances);
  6. res.json(instances);
  7. console.log("Listado de máquinas devuelto")
  8. }
  9. ).catch((e) => {
  10. console.log(e);
  11. res.status(500).json({ error: e })
  12. })
  13. })

字符串
客户端代码

  1. function getInstances(userId) {
  2. let instances = new Map();
  3. fetch(APILINK + userId + "/list", {method: 'GET'})
  4. .then(response => {
  5. if (!response.ok) {
  6. throw new Error(`HTTP error! Status: ${response.status}`);
  7. }
  8. response.json();
  9. })
  10. .then(function(data) {
  11. console.log(data);
  12. instances = data;
  13. })
  14. .catch(error => {
  15. console.error('Error:', error);
  16. });
  17. return instances;
  18. }


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

pinkon5k

pinkon5k1#

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

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

字符串

相关问题