El problema es este:
var r = db.demo(query, function(result) { data = result; });
console.log( 'Data : ' + data);
El console.log
se ejecutará antes de que se llame a la función de devolución de llamada, porque db.demo
es asincrónico, lo que significa que puede tardar un poco en terminar, pero mientras tanto, la siguiente línea del código, console.log
, será ejecutado.
Si desea acceder a los resultados, debe esperar a que se llame a la función de devolución de llamada:
var r = db.demo(query, function(result) {
console.log( 'Data : ' + result);
});
Así es como la mayoría de los códigos que se ocupan de E/S funcionarán en Node, por lo que es importante conocerlo.