node.js怎么返回数据库查询结果的当前值

goldenMoon 发布于 2016/06/17 11:01
阅读 298
收藏 0
 求大神指导,谢谢!!!
var sql='select u.pwd from t_user u where u.id=6'
var pwd='';
findById();
//console.log(pwd);
//连接数据库
function findById(){
var mysql=require('/Users/Administrator/AppData/Roaming/npmde_modules/mysql');
    var conn=mysql.createConnection({
   'host':'localhost',
   'user':'root',
   'password':'w123456',
    });
    conn.connect();
conn.query('use mvc1');
    conn.query(sql,function(err,result){
if(err){
console.log('error');
}else{
pwd=result[0].pwd;             console.log(pwd);
}

    });
    conn.end();
}
这个肯定得到结果

var sql='select u.pwd from t_user u where u.id=6'
var pwd='';
findById();
console.log(pwd);
//连接数据库
function findById(){
var mysql=require('/Users/Administrator/AppData/Roaming/npmde_modules/mysql');
    var conn=mysql.createConnection({
   'host':'localhost',
   'user':'root',
   'password':'w123456',
    });
    conn.connect();
conn.query('use mvc1');
    conn.query(sql,function(err,result){
if(err){
console.log('error');
}else{
//console.log(result[0].pwd);
pwd=result[0].pwd;
console.log(pwd);
}

    });
    conn.end();
}
然后改了下,结果为打印空,然后打印密码,当时没有注意node.js NW.js单线程,异步I/O,

又改了下
var sql='select u.pwd from t_user u where u.id=6'
//var pwd='';
var pwd=findById();
console.log(pwd);
//连接数据库
function findById(){
var mysql=require('/Users/Administrator/AppData/Roaming/npmde_modules/mysql');
    var conn=mysql.createConnection({
   'host':'localhost',
   'user':'root',
   'password':'w123456',
    });
    conn.connect();
conn.query('use mvc1');
    conn.query(sql,function(err,result){
if(err){
console.log('error');
}else{
//console.log(result[0].pwd);
//pwd=result[0].pwd;
//console.log(pwd);
return result[0].pwd;
}

    });
    conn.end();
}
打印结果为undefined ,请问如果将pwd作为全局变量怎么得到当前查询结果呢?

加载中
0
zabcd117
zabcd117

node的库90%以上都是callback模式,也就是你的conn.connect, conn.query都不能像java或者php中直接通过同步的方式来获取数据,一个典型的例子就是

conn.connect(function(err){
    conn.query(sql, function(qerr, result){
    ......
    }
})



你可以用Promise类库或者async类库,将异步回调改成友好一点模式。

goldenMoon
goldenMoon
嗯,已解决
返回顶部
顶部