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

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

我决定在这里创build一个模块(命名为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 

但是,当我用我的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); } } 

但是没有任何东西返回到我的结果variables。 当我把我的模块console.log()没有打印。

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

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

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