Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合并异步回调将导致使用nodejs的单个响应_Javascript_Node.js_Express - Fatal编程技术网

Javascript 合并异步回调将导致使用nodejs的单个响应

Javascript 合并异步回调将导致使用nodejs的单个响应,javascript,node.js,express,Javascript,Node.js,Express,我必须从nodejs/express应用程序中的多个mdb文件中读取数据。我可以使用一个文件读取数据,并返回响应: var ADODB = require('node-adodb'); app.get('/data', function (req, res) { db = "mydb.mdb" var connection = ADODB.open('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + db); var query =

我必须从nodejs/express应用程序中的多个mdb文件中读取数据。
我可以使用一个文件读取数据,并返回响应:

var ADODB = require('node-adodb');

app.get('/data', function (req, res) {
  db = "mydb.mdb"
  var connection = ADODB.open('Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + db);
  var query = 'SELECT * FROM [MyTable]';
  connection
    .query(query)
    .on('done', function (data) {
        r = JSON.stringify(data, null, '  ');
        res.end(JSON.stringify(r, null, '  '));
    })
    .on('fail', function (data) {
        res.end(JSON.stringify(data, null, '  '));
    });
})
现在,我必须使用数据库名称列表来完成此操作。
如果我对数据库名称执行
for循环
,如何将所有
.on('done')
回调合并到一个
res.end(allData)
响应中

使用Promise.all(数组),其中参数是异步承诺列表。结果将是所有响应的列表,其顺序与数组中的承诺相同

app.get('/data', function(req, res) {
  .. //Set up the promises
  var promise1 = connecetion.query(string);
  var promise2 = connecetion.query(string);

  Promise.all([promise1, promise2]).then(function(result) {
    res.send(result);
  }).catch(function(error) {
    res.status(500).send(error);
  });
});

我试过了,但也许我遗漏了什么。我有这样一个结果:
[{“域”:null,{u事件”:{},“参数”:{“连接”:“提供程序=Microsoft.ACE.OLEDB.12.0;数据源=A.mdb”,“sql”:“从[SessionData]“}},{“域”:null,{“事件”:{},“参数”:{“连接”:“提供程序=Microsoft.ACE.OLEDB.12.0;数据源=B.mdb”,“sql”:“SELECT*FROM[SessionData]”}]
从未使用过ADODB,文档似乎是亚洲的。我看不懂。但是您可能想尝试使用bleubird来提示回调。这是一篇关于承诺如何工作的精彩文章,我正在他的代码中寻找复制
query:function(params)
,但是我一直在使用
新的ActiveXObject('ADODB.Connection')
。他是如何使用它的?他使用
spawn
运行带有
ADODB
ActiveX对象的js脚本。我在
proxy.js
中更改了代码以使用
spawnSync
,现在我有了一个同步读取。