我的 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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
我想获取名称并将其保存到另一个文件中的 var name 。
var uid = req.session.user;
var name = db.getName(uid);
console.log(name);
Run Code Online (Sandbox Code Playgroud)
db 函数 getname 有什么问题为什么我会得到未定义的结果?如果你能帮助我那就太好了!
从异步函数返回数据可能会返回未定义,因为执行返回语句时数据库请求可能尚未完成。
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.
}
Run Code Online (Sandbox Code Playgroud)
数据库查询的结果需要在回调中传递,或者可以保存在全局变量中。
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);
}
});
}
Run Code Online (Sandbox Code Playgroud)
为了从另一个文件执行:
function print(name) {
console.log(name);
}
var uid = req.session.user;
getName(uid, print);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17465 次 |
| 最近记录: |