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