Node.js에서 데이터 개념을 전달하는 데 어려움을 겪고 있습니다. 예를 들어 지루한 SQL을 살펴 보겠습니다. 다음 예에서 코드입니다는 인수로 기능을한다Node.js의 미리 정의 된 함수를 통한 인수 전달
//acquire a connection
pool.acquire(function poolAcquire(err, connection) {
if (err) { console.error(err); return; }
//use the connection as normal
var request = new Request('select 1;select 2;select 3', function requestCallback (err, rowCount) {
if (err) { console.error(err); return;}
console.log('rowCount: ' + rowCount);
//release the connection back to the pool when finished
connection.release();
});
request.on('row', function onRequestRow(columns) {
console.log('value: ' + columns[0].value);
});
connection.execSql(request);
});
pool.acguire이 기능은 특정 서명 (ERR, 연결)
내 질문이있다 - 나는 SQL 문을 통과 할 방법을 이 함수 안에 있습니까? 다른 기능 서명이 호출되지 않아 서명을 변경할 수 없습니다.
또한 변수가 외부에서 변경 될 수 있으므로 전역 범위를 사용할 수 없습니다.
다른 말로하면 랩퍼 호출을 우회하여 일부 데이터를 전달하는 방법을 찾아야합니다.
다른 함수에 포장하여
var mySQLs = ['select 1;select 2;select 3','select 4;select 5;'];
async.forEach(mySQLs,WorkWithOneItem, AllIsDone);
function WorkWithOneItem(item, callback){
pool.acquire(?????(item));
callback(); // tell async that the iterator has completed
}
function AllIsDone (err) {
console.log('All done');
}