我想查詢一個數據庫,然後從結果中創建一個對象數組,將它們變成一個JSON對象。用回調返回結果
我不習慣Javascript的異步性,我真的很困惑如何實現需要同步工作的東西。我知道我可能需要使用回調,但在看了很多教程後,我只剩下更多的困惑。
這是不進行回調的代碼:
var foreignTable = (tablename,idArr)=>{
\t var dataArray = [];
\t //call a query for each of the ids
\t var objectToAdd;
\t for(var id of idArr){
\t \t objectToAdd = queryForeignTable(tablename,id);
\t \t dataArray.push(objectToAdd);
\t }
\t return dataArray;
\t
connection.end();
};
var queryForeignTable = (tablename,id)=>{
\t connection.query("SELECT * FROM "+tablename+" WHERE id="+id, function (error, results, fields) {
\t if(error)throw error;
\t var objectToAddToArray={};
\t //Go through each field in a result and make the object
\t for(packet of fields){
\t \t var label = packet.name;
\t \t objectToAddToArray[label] = results[0][label];
\t }
\t
\t return objectToAddToArray;
});
};
var arrayOfDrivers = foreignTable("driver",[1,2]);
outputJson["drive"]=arrayOfDrivers;
console.log(outputJson); // { drive: [ undefined, undefined ] }
我試圖foreignTable(tablename, idArr, callback)
有回調調用queryForeignTable
沒有運氣。
有人可以解釋我怎麼可以得到這段代碼與回調工作?
也許你想檢查* ES7的異步功能(異步/等待)*。例如。這[介紹](http://rossboucher.com/await/) – oneturkmen
learnyounode是一個很好的教程,如果你還沒有嘗試過https://github.com/workshopper/learnyounode –