tl;dr alles gebeurt in een terugbelverzoek.
Je struikelt over de asynchrone aard van Javascript. Tegen de tijd dat uw console.log(value);
oproep wordt uitgevoerd, is de query niet (noodzakelijkerwijs) voltooid. Het is dus niet mogelijk dat het resultaat van de zoekopdracht op dat moment beschikbaar is.
Veel ontwikkelaars gebruiken een patroon als dit, met een callback-functie om de volgende stap af te handelen wanneer het queryresultaat binnenkomt.
function quo (success){
value = connection.query(
'SELECT role from `roles` where `id` = 1' ,
function (error, results, fields) {
if (error) throw error;
console.log('The role is: ', results[0].role);
success (results[0].role);
});
}
quo (function (role) {
console.log(role);
/* do something useful with the role that came back from the query */
});
Promise
objecten maken dit soort dingen gemakkelijker te lezen in node.js. Maar ze uitleggen valt sowieso buiten het bestek van een Stack Overflow-antwoord.