【问题标题】:How to use promises to get result from mysql query in node.js如何使用 Promise 从 node.js 中的 mysql 查询中获取结果
【发布时间】:2019-03-11 17:23:48
【问题描述】:

我一直在使用普通回调来获取 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 library,但文档不是很清楚。任何有关它的帮助将不胜感激。谢谢

【问题讨论】:

    标签: mysql node.js promise es6-promise bluebird


    【解决方案1】:

    你可能想像这样使用它

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

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

    【讨论】:

      猜你喜欢
      • 2017-07-11
      • 2017-07-22
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 2016-06-14
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多