Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js nodejs同步调用:获取数据库回调并将其解析到前端_Node.js_Sqlite_Callback_Synchronous - Fatal编程技术网

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

Node.js nodejs同步调用:获取数据库回调并将其解析到前端,node.js,sqlite,callback,synchronous,Node.js,Sqlite,Callback,Synchronous,在我的NodeJS后端,我有一个函数,我从sqlite数据库中获取一个值,我想把它发送到前端,但它总是说Object{msg:false}我想我需要一个函数,在这里我可以对函数进行同步调用。 我的代码: 有人能帮我吗?提前感谢。我假设db.getMsg是您自己的代码,如果命中错误,它将抛出错误,如果成功,它将在回调中返回消息 router.get('/', function(req, res, err){ try { var uid = req.session.user;

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


有人能帮我吗?提前感谢。

我假设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() });
    }
});
您的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(uid, function(err, result) {
    if(err){
        res.send({msg : "No message available"});
    }else{
        msg = result
        res.send({msg: result})
    }
})
当您调用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(uid, function(err, result) {
    if(err){
        res.send({msg : "No message available"});
    }else{
        msg = result
        res.send({msg: result})
    }
})

重复:如何将msg保存到全局变量中?因为我想编辑msg,它现在只在db.get函数中起作用。。但是我想在db.get函数之外编辑它。尽量不要在全局变量中设置任何内容,我建议您使用db.setMsg(newMsg)并使用相同的db.getMsgI检索它。我不想在这里设置消息,我想设置全局变量!在那里我可以保存数据库中的内容。我已经编辑了代码。这回答了你的问题吗?