如何使用承诺从 node.js 中的 mysql 查询中获取结果

How to use promises to get result from mysql query in node.js

我一直在使用普通回调来获取 mysql 查询来为我的应用程序创建一个休息 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 library,但文档对此不是很清楚。有关它的任何帮助将是 appreciated.Thanks

你可能想像这样使用它

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

您可以在 between.I 中添加您的错误处理序列希望它能帮助您谢谢