2012-12-29 16 views
0

這裏是我的代碼:當我嘗試連接數據庫時是否有任何問題?

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : 'localhost', 
    user  : 'root', 
    password : '1', 
    database : 'test' 
}); 
connection.connect(); 

data = connection.query('SELECT * FROM deneme', function(err, rows, fields){ 
    if(err) throw err; 
    veri = rows; 
    return veri; 
}); 

console.log(data); 

當我運行此文件(index.js),如下

節點index.js

它返回一些錯誤和不顯示數據。

我的MySQL DATAS如下:

INSERT INTO `deneme` (`id`, `name`) VALUES 
(1, 'yusuf'), 
(2, 'ali'); 

問題是什麼?

的錯誤是:

{ _callback: [Function], 
    _ended: false, 
    _callSite: ' at Query.Sequence (/home/yusuf/Masaüstü/node/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:21)\n at new Query (/home/yusuf/Masaüstü/node/node_modules/mysql/lib/protocol/sequences/Query.js:11:12)\n at Protocol.query (/home/yusuf/Masaüstü/node/node_modules/mysql/lib/protocol/Protocol.js:41:24)\n at Connection.query (/home/yusuf/Masaüstü/node/node_modules/mysql/lib/Connection.js:90:25)\n at Object.<anonymous> (/home/yusuf/Masaüstü/node/index.js:10:19)\n at Module._compile (module.js:446:26)\n at Object..js (module.js:464:10)\n at Module.load (module.js:353:31)\n at Function._load (module.js:311:12)\n at Array.0 (module.js:484:10)', 
    sql: 'SELECT * FROM deneme', 
    typeCast: true, 
    nestTables: false, 
    _resultSet: null, 
    _results: [], 
    _fields: [], 
    _index: 0, 
    _loadError: null, 
    _events: { error: [Function], packet: [Function], end: [Function] } } 
+0

它返回「一些」錯誤?錯誤說的是什麼? – JJJ

+0

愚蠢的問題:端口?它是默認的mysql服務器實例(內存3306),錯誤信息是重要的 –

+0

我已更新。 – user1870012

回答

1

你搭售做一些事情,而不是同步異步。

你的問題是在這裏:

data = connection.query('SELECT * FROM deneme', function(err, rows, fields){ 
    if(err) throw err; 
    veri = rows; 
    return veri; 
}); 

console.log(data); 

已執行回調之前,您正在記錄數據。這就是爲什麼你需要在回調函數中包含代碼,所以它說「一旦你完成了獲取數據庫結果,就這麼做」。

data = connection.query('SELECT * FROM deneme', function(err, rows, fields){ 
    if(err) throw err; 
    veri = rows; 
    console.log(veri); // will be logged once its finished 
}); 

你可以做這樣的事情訪問此功能之外的結果:

var results; 
data = connection.query('SELECT * FROM deneme', function(err, rows, fields){ 
    if(err) throw err; 
    veri = rows; 
    results = veri; 
    someOtherFunction(); 
}); 

var someOtherFunction = function(){ 
    console.log(results); 
} 

你可以看一下一個叫async這是善於做你想要做的模塊。

https://github.com/caolan/async

P.S

歡迎的NodeJS。

+0

真的,獨特的答案:) – user1870012

相關問題