martes, 31 de mayo de 2011

nodejs mysql database

Este es un pequeño articulo como utilizar node.js como web server para mostrar los resultados de una consulta a un motor de base de datos MySQL.


Lo primero que debemos ver es tener el módulo necesario "mysql", estoy utilizando la versión 0.5.0-pre.

#node -v
v0.5.0-pre


Lo primero que hacemos es crear el objeto para la consulta:

var Client = require('mysql').Client,
client = new Client();
client.user = 'user';
client.password = 'password';
client.host='127.0.0.1';
client.port='3306';
client.database='base_de_datos'
client.connect();


Luego creamos el servidor:

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});

Y dentro de este realizamos la consulta, y la asociamos a su función de callback

client.query(
"select * from table where campo1 > 1 limit 10;",
function select(err, results, fields) {
if (err) {
console.log("Error: " + err.message);
throw err;
}

Sacamos los datos por la consola y por la pantalla

console.log("Number of rows: "+results.length);
console.log(results);


for (var i in results){

var result = results[i];
res.write(result.campo1+"\n");
}

res.end();
});

Terminamos el código bindeando un puerto para escucha

}).listen(1337, "0.0.0.0");
console.log('Server running ');



El script completo es:


var Client = require('mysql').Client,
client = new Client();
client.user = 'user';
client.password = 'password';
client.host='127.0.0.1';
client.port='3306';
client.database='DB'
client.connect();


var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});


client.query(
"select * from table where campo1 > 1 limit 10;",
function select(err, results, fields) {
if (err) {
console.log("Error: " + err.message);
throw err;
}
console.log("Number of rows: "+results.length);
console.log(results);
res.write(results);

for (var i in results){

var result = results[i];
res.write(result.campo1+"\n");
}
res.end();
});

}).listen(1337, "0.0.0.0");
console.log('Server running ');

1 comentario: