Detta är ett vanligt misstag bland async/nodejs nybörjare. Du har i princip packat in en asynkronfunktion i en synkfunktion som bryter ner karaktären hos nodens händelseslinga. Returuttrycket måste ersättas med ett återuppringning. Se nedan:
// Method
function getUserInfo (userID, dynamicField, callback) {
var query = connection.query('SELECT '+dynamicField+' from users WHERE userID = '+connection.escape(userID));
query.on('result', function(row) {
callback(null, row.dynamicField);
});
};
// Implementation
getUserInfo(8, userEmail, function(err, result){
console.log(err || result);
});
Enligt konvention skickar vi i Nodejs alltid ett felobjekt först i återuppringningen. I det här fallet, eftersom det inte finns något fel att fånga, skickar vi null i dess ställe.