nodejs同步调用:获取数据库回调并将其解析到前端

nodejs synchronous call: getting db callback and parse it to frontend

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

谁能帮帮我?提前致谢。

我假设 db.getMsg 是您自己的代码,如果命中错误将抛出错误,如果成功则回调 return 消息

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