我對nodejs非常陌生,並且在理解如何使用mysql連接對象時遇到了一些困難。nodejs中的同步mysql查詢
我的問題不在代碼中,而是在設計模式中。
可以說我有用戶模塊
module.exports = function(){
return{
id: "",
load: function(id){
var sql = 'SELECT * from users where id = '+ DB.escape(id);
console.log(1);
DB.query(sql, function (err, rows) {
this.id = rows[0].id; // not working
console.log(rows[0].id); // prints the id 4
console.log(2);
});
console.log(3);
}
}
}
從模塊外部我運行下一個代碼
var user = require('../modules/user');
var selected_user = user();
console.log("entering users me route");
selected_user.load(4);
console.log("user id is " + selected_user.id); //This does not print the id 4
當我運行該代碼,控制檯日誌1,則3,然後2. 這是由於節點js的異步流。
但是,如果我建立一個網站,我需要查詢結束爲了填充我的用戶對象,然後再將HTML發送到瀏覽器?
什麼是正確的做法?
另外,當我嘗試填充用戶的id屬性,我從數據庫中收到的ID它不起作用。
任何想法?
謝謝
但是,如果我有一個網頁,需要從數據庫中查詢很多,我希望它能像php說的那樣工作。運行查詢,獲取結果,做點什麼,繼續前進 –
由於node.js非阻塞性質,這目前是不可能的。但是,鏈接承諾會產生非常類似的流程。 – matanso
這正是我所做的,但它似乎很奇怪,因爲如果我有20個電話的數據庫,我需要改變20個「承諾」一個在另一個裏面,這似乎是一個非常糟糕的方式來建立一個網站 –