Ich versuche, eine Datenbank abzufragen, dann ein Array von Objekten aus den Ergebnissen zu machen, um sie in ein JSON-Objekt umzuwandeln.Zurückgeben von Ergebnissen mit Rückrufen
Ich bin nicht an asynchrone Art von Javascript gewöhnt und ich bin wirklich verwirrt darüber, wie man etwas implementiert, das synchron arbeiten muss. Ich weiß, dass ich wahrscheinlich Callbacks verwenden muss, aber nachdem ich mir viele Tutorials angeschaut habe, bin ich nur noch verwirrter.
Dies ist der Code ohne Rückrufe:
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 ] }
ich foreignTable(tablename, idArr, callback)
mit dem Rückruf versucht Aufruf queryForeignTable
ohne Glück.
Kann jemand erklären, wie ich diesen Code mit Callbacks arbeiten kann?
Wahrscheinlich möchten Sie * ES7 Async-Funktionen (async/erwarten) * überprüfen. Z.B. dies [Präsentation] (http://rossboucher.com/await/) – oneturkmen
learnyounode ist ein großes Tutorial, wenn Sie es nicht schon versucht haben https://github.com/workshopper/learnyounode –