A questão é esta:
var r = db.demo(query, function(result) { data = result; });
console.log( 'Data : ' + data);
O
console.log
será executado antes que a função de retorno de chamada seja chamada, porque db.demo
é assíncrono, o que significa que pode levar algum tempo para terminar, mas enquanto isso a próxima linha do código, console.log
, será executado. Se você deseja acessar os resultados, precisa aguardar a chamada da função de retorno de chamada:
var r = db.demo(query, function(result) {
console.log( 'Data : ' + result);
});
É assim que a maioria dos códigos que lidam com E/S funcionarão no Node, por isso é importante aprender sobre isso.