寻找有关nodeJs的mysql模块的一些帮助

时间:2012-10-12 20:06:04

标签: javascript mysql node.js

我正在尝试与nodeJs服务器和mysql数据库进行聊天。

我决定在这里创建一个模块(名为Mysqler):

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

但是当我用我的函数调用它时:

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

但是没有任何内容返回到我的结果变量中。 当我在我的模块中放入console.log()时,没有打印出来。

2 个答案:

答案 0 :(得分:1)

  1. Mysql query方法是异步的。您试图从回调中返回结果。这绝对是错误的方式。您需要通过将其作为参数传递给回调函数来返回结果。
  2. 您尝试调用query对象的方法mysql而不是connection

答案 1 :(得分:1)

也许你可以尝试这样的事情:

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;

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

}