1

我想通过odata. 所以https://uipathspace.com/odata/Robots返回所有的机器人。

但是当我改变我的机器人描述时:

在此处输入图像描述

并刷新https://uipathspace.com/odata/Robots。它正确显示了更新的文本:

在此处输入图像描述

但是我使用 node.js Orchestrator 实现创建了一个应用程序。在这里我看不到描述的变化:

在此处输入图像描述

是否有一些硬核缓存,如果有,如何禁用它?我找不到那个设置。

4

1 回答 1

1

问题是res.send被放在回调之外。所以它永远不会等待 REST api 调用的实际完成。

这是它只获取第一个请求的静态结果的基本代码,它从未更新结果:

app.get('/robots', function (req, res) {
  ...
  var orchestrator = require('./authenticate');
  var results = {};
  var apiQuery= {};
  orchestrator.get('/odata/Robots', apiQuery, function (err, data) {
    for (row in data) {
      results[i] = 
        { 
          'id' : row.id,
          ...
        };
    }
  });  
  return res.send({results});
});

解决方案是将移入然后res.send({results}); orchestrator.get正确等待回调时正确覆盖结果:

app.get('/robots', function (req, res) {
  ...
  var orchestrator = require('./authenticate');
  var results = {};
  var apiQuery= {};
  orchestrator.get('/odata/Robots', apiQuery, function (err, data) {
    for (row in data) {
      results[i] = 
        { 
          'id' : row.id,
          ...
        };
    }
    return res.send({results});
  });  
});
于 2021-01-20T12:36:17.733 回答