tl;dr semuanya terjadi dalam panggilan balik.
Anda tersandung pada sifat Javascript yang tidak sinkron. Pada saat console.log(value);
. Anda panggilan berjalan, kueri tidak (harus) selesai. Jadi, tidak mungkin hasil kueri tersedia saat itu.
Banyak pengembang menggunakan pola seperti ini, dengan fungsi panggilan balik untuk menangani langkah berikutnya saat hasil kueri tiba.
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
objek membuat hal semacam ini lebih mudah dibaca di node.js. Namun, menjelaskannya di luar cakupan jawaban Stack Overflow.