2

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.

2 Answers 2

1
  1. Mysql 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.
  2. You trying to call method query of mysql object instead of connection.
Sign up to request clarification or add additional context in comments.

Comments

1

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);
        }
    });

}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.