2014-02-21 2 views
0

Например, в случае соединения socket.io handleServer является функция обратного вызова:узел-MySQL несколько экземпляров не удается

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), запрос выполняется правильно, но в последовательных вызовах это не срабатывает.

"м не имеет никакого метода" CreateConnection"

Теоретически не должно создать еще одно соединение?

ответ

1

Нет, вам не нужно создавать новый экземпляр каждый раз.

Проблема с вашим кодом заключается в том, что вы используете один и тот же глобальный var m для двух разных объектов.

В вашем определении mysql func вы определяете глобальный var m как модуль mysql, а затем вы перерабатываете глобальный m как new mysql.

Попробуйте это:

var m = new mysql(); 
+0

О, но первый код в mysql.js сценария и второй код в sio.js сценарии. может ли глобальная переменная m в скрипте влиять на другой скрипт? – user1629569

+0

О, да, это правда. наборы унаследованы – user1629569

Смежные вопросы