在我的NodeJS后端我有一个函数,我从sqlite数据库中获取一个值,我想将它发送到前端,但它总是说Object { msg: false }
我想我需要一个函数,我可以进行同步调用函数。
我的代码:
router.get('/', function(req, res, err){
var msg = " ";
var uid = req.session.user;
function printMsg(message){
msg = message;
}
db.getMsg(uid, printMsg);
if(err){
res.send({msg : "No message available"});
} else{
res.send({msg: msg})
}
});
任何人都可以帮助我吗?提前谢谢。
答案 0 :(得分:2)
我假设db.getMsg是你自己的代码,如果遇到错误就会抛出错误,如果成功则会在回调中返回消息
router.get('/', function(req, res, err){
try {
var uid = req.session.user;
db.getMsg(uid, function(msg) {
if (msg) res.send({msg: msg})
else res.send({msg : "No message available"});
}}
} catch (error) {
res.send({error: error.toString() });
}
});
答案 1 :(得分:1)
您的db.getMsg()函数应定义如下
function getMsg(uid, callback){
// your logic
var resultFromDb = ''; // Contents from db.
if( not success ){ // If that fails
err = //define error object
callback(err) // Call the callback function only with an error.
}
else{
callback(undefined, resultFromDb ) // else, call the callback function with an
// undefined value for the error.
}
}
当你调用db.getMsg()时,按如下方式调用它
db.getMsg(uid, function(err, result) {
if(err){
res.send({msg : "No message available"});
}else{
msg = result
res.send({msg: result})
}
})