寻找一些关于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()没有打印。
- Mysql
query
方法是asynchronous的。 你试图从callback中返回结果。 这是绝对错误的方式。 您需要通过将参数作为parameter passing给callback函数来返回结果。 - 你试图调用
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); } }); }