nodejs同步调用:获取db回调并将其解析为前端

时间:2016-11-25 07:00:59

标签: node.js sqlite callback synchronous

在我的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})
         }
});

任何人都可以帮助我吗?提前谢谢。

2 个答案:

答案 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})
    }
})