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