2017-02-23 1 views
0

nodejs/express 응용 프로그램에서 여러 mdb 파일의 데이터를 읽어야합니다.
나는 수 있어요 하나 개의 파일로 작업을 수행하고 응답 다시 보내 비동기 콜백을 병합하면 nodejs와의 단일 응답이 발생합니다.

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, ' ')); 
    }); 
}) 

이 지금은 DB 이름 목록을해야합니다.
dbname에 for loop을 수행하면 res.end(allData) 응답으로 모든 .on('done') 콜백을 병합 할 수 있습니까?

답변

0

사용 Promise.all (array) 여기서 인수는 비동기 약속 목록입니다. 결과는 배열의 약속과 동일한 순서로 모든 응답 목록이됩니다.

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); 
    }); 
}); 
+0

테스트했지만 어쩌면 누락되었습니다. 이 결과는 다음과 같습니다. '[ { "domain": null, "_events": {}, "params": { "connection": "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = A .MDB "는 "SQL ":" " } } { "도메인 [SessionData] FROM SELECT * "NULL, "_events "{} "의 PARAMS "{ "연결 " "공급자 = Microsoft.ACE.OLEDB.12.0; 데이터 원본 = B.mdb" "sql": "SELECT * FROM [SessionData]" } } ] –

+0

절대 사용하지 않는 ADODB 및 문서는 아시아 인 것 같습니다. . 그것을 읽을 수 있습니다. https://github.com/nuintun/node-adodb하지만 약자를 사용하여 콜백을 약속하려고 할 수도 있습니다. –

+0

이것은 https://developers.google.com/web/의 약정 방법에 대한 훌륭한 게시물입니다. 기본/시작/프라이머/약속 –

관련 문제