Sqlite3 nodejs从表中获取值



我有函数getName在我的db.js

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

,我想获得名称并将其保存到另一个文件的var name。

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

什么是错误的db函数getname为什么我得到未定义?如果你能帮我,那就太好了!

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

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);

最新更新