我一直在使用普通的回调函数来获取mysql查询来为我的应用程序创建一个REST API,但是代码变得太复杂了,因为这是获取用户个人资料的代码
const con=require('../mysql.js');
router.route("/profile")
.post(checkjwt,(req,res,next)=>{
try{
var decoded = jwt.verify(req.body.token, config.secret);
var mobile=decoded.mobile;
if(mobile==null){
res.json({
status:404,
message:'Please provide mobile Number'
});
}
else{
var sql="select * from flavica_user where USER_MOBILE=?";
con.query(sql,mobile,(err,result)=>{
if(err){
res.json({
status:204,
message:err.sqlMessage
});
}
else if(result.length==0){
res.json({
status:404,
message:'No Data Found'
});
}
else if(result.length>0){
res.json({
status:200,
message:result[0]
});
}
});
}
}
catch(err) {
res.json({
status:404,
message:'Wrong Authorization token'
});
}
})
我搜索了有关bluebird promise库的信息,但是文档对此并不十分清楚。任何有关它的帮助将不胜感激。谢谢
答案 0 :(得分:0)
您可能想像这样使用它
var Promise = require("bluebird"); //use blue bird library after installing npm install bluebird
const con=Promise.promisifyAll(require('../mysql.js'));
router.route("/profile").post(checkjwt,(req,res,next)=>{
try{
var decoded = jwt.verify(req.body.token, config.secret);
var mobile=decoded.mobile;
var sql="select * from flavica_user where USER_MOBILE=?";
con.queryAsync(sql,mobile).then(function(result){//bluebird identifies with Async
res.json({
status:200,
message:result
})
}).catch(function(err){
console.log(err);
})
}
catch(err) {
console.log(err);
}
});
您可以在两者之间添加错误处理序列。希望对您有所帮助