例如,在socket.io连接事件中 handleServer 是回调函数:
function handleServer(s)
{
m = new mysql();
m.Query("blabla",function(r)
{
console.log(r)
});
m.Close();
}
mysql对象是:
m = require("mysql");
function Mysql()
{
this.mysql = m.createConnection({ blablah });
this.mysql.connect(function(err)
{
// blabla
});
}
Mysql.prototype.Query = function(q, callback)
{
this.mysql.query(q, function(err, v)
{
callback(v);
})
}
在第一个函数调用(handleServer)中,查询被正确执行,但在连续调用中,这会导致抛出
“m没有方法'createConnection'”
理论上不应该创建另一个连接?
答案 0 :(得分:1)
不,你不需要每次都创建一个新实例。
您的代码存在的问题是您对两个不同的对象使用相同的全局变量m
。
在mysql func定义中,您将全局变量m
定义为mysql模块,然后将全局m
重新定义为new mysql
。
试试这个:
var m = new mysql();