nodejs同步调用:获取数据库callback,并将其parsing到前端

在我的NodeJS后端我有一个函数,我从sqlite数据库中获得一个值,我想把它发送到前端,但它总是说Object { msg: false }我想我需要一个函数,我可以做一个同步调用function。 我的代码:

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

谁能帮我? 提前致谢。

我假设db.getMsg是你自己的代码,如果成功,将抛出错误,如果命中错误,并在callback中返回消息

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

你的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}) } })