I'm trying to do a chat with a nodeJs server and mysql database.
I decided to make a module (named Mysqler) here:
var mysql = require('mysql');
var Mysqler = function(query) {
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'watchat',
});
connection.connect();
Mysqler.prototype.query = function (query) {
var res = mysql.query(query, function(err, result, fields) {
console.log(result);
if (err) throw err;
else return result;
});
console.log(res);
return res;
};
};
module.exports.Mysqler = Mysqler
But when I call this with my function:
mysql = require("./mysqler");
function connection(clients, socket, data) {
var username = usefull.deleteBreakLine(data[1]);
var password = usefull.deleteBreakLine(data[2]);
var result = mysql.Mysqler("SELECT * FROM Users");
for (var i in result)
{
var user = result[i];
socket.write(user.username);
}
}
But nothing is returned into my result variable. When i put console.log() in my module nothing is printed.
query
method is asyncronious. You trying to return result from callback. This is absolutely wrong way. You need to return result by passing it as argument to callback function.query
of mysql
object instead of connection
.Maybe you can try something like that :
var mysql = require('mysql');
var Mysqler = (function() {
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'watchat',
});
connection.connect();
return {
query: function (query,cb) {
var res = mysql.query(query, function(err, result, fields) {
console.log(result);
if (err) throw err;
else cb(result);
});
};
}
})();
module.exports = Mysqler;
And:
var mysql = require("./mysqler");
function connection(clients, socket, data) {
var username = usefull.deleteBreakLine(data[1]);
var password = usefull.deleteBreakLine(data[2]);
mysql.query("SELECT * FROM Users",function(result){
for (var i in result)
{
var user = result[i];
socket.write(user.username);
}
});
}