2014-09-12 50 views
0

我剛剛開始與Node.js,我堅持如何收穫與節點的數據庫查詢的結果。Havensing mysql查詢與節點

如果我們考慮到這項工作在PHP如何,我們有這樣的:

(after setting the connection $connection) 
$query="select field_x from Table where field='something'"; 
[email protected] mysqli_query($connection, $query); 
if(mysqli_num_rows($result)>0) 
{ 
    [email protected] mysqli_fetch_array($result); 
} 
$data=''; 
if(isset($row['field_x'])) 
{ 
    // query result is HARVESTED 
    $data=$row['field_x']; 
} 

,如果查詢的結果是不爲空,$數據(= $行[「field_x」])可使用在查詢塊外的代碼中的每一處。

是否有一個非常簡單直接的方式(類似於PHP方式)在節點中執行此操作。

基本上我想定義與全局範圍的arrray /變量,並傳遞到連接查詢塊,並把在該數組/變量的查詢的結果,類似:

var Array=[]; // global scope 
var mysql = require('mysql'); 
var connection = mysql.createConnection({some_stuff}); 

connection.connect(); 
var queryString = 'SELECT field_x FROM Table'; 
connection.query(queryString, function(err, rows, fields) { 
if (err) throw err; 

for (var i in rows) { 
    Array.push(rows[i].field_x)); 
} 
}); 

connection.end(); 

不限建議/意見?

問候。

+0

你究竟看到了什麼?看起來大體上是正確的,這取決於你下一步做什麼。 – Paul 2014-09-12 15:40:53

+0

嗨保羅。這個想法是使用connection.end()之外的數組內容。但是數組是空的。 – user3256539 2014-09-12 16:09:07

回答

0

它看起來像你在查詢完成之前結束連接運行&響應。嘗試將connection.end()放入回調中。

0

我感覺有點傻回答我自己的問題......無論如何。

我的問題是關於是否有類似PHP的方法來從數據庫中收集數據。 問題是因爲PHP不是異步的,查詢數據庫發生在正常執行流程中,這意味着在執行下一行代碼之前,必須等到數據庫服務器響應。 在node.js的異步世界中,查詢數據庫涉及回調,這些回調不在同步執行流程中。

因此,在這種情況下,試圖實現類似於PHP代碼將失敗,因爲在查詢數據庫是異步任務時,任何對數據庫查詢意味着設置結果的引用都會同步發生,這意味着它將在同步流程完成執行後的某個時刻執行。