如何在node.js中使用promises从mysql查询中获取结果

kcrjzv8t  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(407)

我一直在使用常规回调来获取mysql query,以便为我的应用程序创建restapi,但是代码变得太复杂了,就像获取用户配置文件的代码一样

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的信息,但文档不太清楚。如果您有任何帮助,我们将不胜感激。谢谢

jucafojl

jucafojl1#

你可以这样用

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

你可以在两者之间添加错误处理序列。希望对你有所帮助。谢谢

相关问题