sqlite3 nodejs从表中获取值

时间:2016-09-22 12:27:08

标签: node.js sqlite

我的db.js

中有getName函数
function getName(uid){
    db.all("SELECT name FROM table WHERE uid = ? ",  function (err){
        if(err){
            console.log(err);
        }else{
            console.log(this);
        }
    });
}

我想获取名称并将其保存到另一个文件中的var名称。

var uid = req.session.user; 

var name = db.getName(uid);
      console.log(name);

db函数getname有什么问题我为什么不定义? 如果你可以帮助我会很棒!

1 个答案:

答案 0 :(得分:2)

从异步函数返回数据可能会返回undefined,因为在执行return语句时数据库请求可能尚未完成。

function getName(uid, callback){
  var query = "SELECT name FROM table WHERE uid = " + uid;
  var name = null;
  db.all(query, function (err, rows) {
    if(err){
        console.log(err);
    }else{
      name = rows[0].name;
    }
  });
  return name; <--- this can be execute before db.all() if executed therefore returning null. This is because javascript runs asynchronously.
}

数据库查询的结果需要在回调中传递,或者可以保存在全局变量中。

function getName(uid, callback){
  var query = "SELECT name FROM table WHERE uid = " + uid;
  db.all(query, function (err, rows) {
    if(err){
        console.log(err);
    }else{
        callback(rows[0].name);
    }
  });
}

为了从另一个文件执行:

function print(name) {
  console.log(name);
}
var uid = req.session.user;
getName(uid, print);