2013-10-28 3 views
0

При запросе DB, я получаю эту ошибку:node.js узел-MySQL запросов не работает

TypeError: Cannot call method 'query' of undefined 
    at Object.<anonymous> (/home/nodeuser/myapp_node/index.js:51:17) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Function.Module.runMain (module.js:497:10) 
    at startup (node.js:119:16) 
    at node.js:901:3 

Мой код выглядит следующим образом:

var mysql = require('mysql'); 
var mysqlConnection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    password : '', 
    database : 'carousel', 
    debug : true, 
}).connect(function(err) { 
    if (!err) { 
     console.log("Connected to MySQL"); 
    } else if (err) { 
     console.log(err); 
    } 
}); 


var userId = 23 

mysqlConnection.query('SELECT * FROM tusers WHERE id = ?', [userId], function(err, results) { 
    console.log(err); 
    console.log(results); 
}); 

Я сделал верный "MySQL" в node_modules , Кроме того, я вижу «Connected to MySQL» в консоли.

Вы знаете, как я могу сделать эту работу?

ответ

5

Метод подключения, который вы наложили на mysql.createConnection, не возвращает соединение. Вместо этого вы можете сделать:

var mysqlConnection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    password : '', 
    database : 'carousel', 
    debug : true, 
}); 

mysqlConnection.connect(function(err) { 
    if (!err) { 
    console.log("Connected to MySQL"); 
    } else if (err) { 
    console.log(err); 
    } 
}); 

Или вы можете оставить о соединении вызова вообще «соединение также может быть неявно создана путем вызова запроса» - https://github.com/felixge/node-mysql#establishing-connections

0

Я думаю, проблема в том, что mysql работает над созданием соединения в процессе инициализации, но ваш код пытается использовать mysqlConnection, прежде чем он будет готов.

Вы должны поместить ваш поиск в то место, где говорится, что соединение хорошее.

Также. Я думаю, вы должны посмотреть на использование пула. Создание нового соединения каждый раз занимает много времени.

+0

Я изменил код, чтобы использовать пул, и он начал за работой. Возможно, соединение с пулом происходит быстрее. Есть ли способ сделать это синхронно? –

+0

Я не уверен, как это можно сделать. Чего вы пытаетесь достичь? –

+0

Вот модуль dB, который я построил для проекта. Возможно, это даст вам некоторые идеи о том, как организовать вещи: http://www.kleelof.com/db.zip –

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