禁用 Node.js Orchestrator 可能缓存到 return 总是最新的数据

Disable possible caching of Node.js Orchestrator to return always latest data

我想通过odata获取最新数据。所以https://uipathspace.com/odata/Robotsreturns所有的机器人。

但是当我更改例如我的机器人描述时:

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

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

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

问题是 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});
  });  
});