我有函数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);