我想查询一个数据库,然后从结果中创建一个对象数组,将它们变成一个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 –