2013-10-28 112 views
0

當查詢的數據庫,我得到這個錯誤: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 。另外,我在控制檯中看到「連接到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 –