gpt4 book ai didi

node.js - sqlite3 nodejs 从表中获取值

转载 作者:搜寻专家 更新时间:2023-10-31 23:46:29 26 4
gpt4 key购买 nike

我的 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 name。

var uid = req.session.user; 

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

db 函数 getname 有什么问题,为什么我会得到 undefined?如果你能帮助我,那就太好了!

最佳答案

从异步函数返回数据可能会返回 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);

关于node.js - sqlite3 nodejs 从表中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39639056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com