我对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个“承诺”一个在另一个里面,这似乎是一个非常糟糕的方式来建立一个网站 –