javascript - 在 Node Mysql 中使用 Promise api 不起作用

标签 javascript node.js promise node-mysql

我可以使用以下代码运行 sql 查询并从 MySql 数据库中获取记录

var mySql = require("mysql");

var connection = mySql.createConnection({
  host : "localhost",
  user : "root",
  password : "rahul",
  database : "testDb" //schema
});

connection.connect();

connection.query("select * from departmentTbl",function(err,rows,fields){

  if(err){
    console.log(err.stack);
  }

  for(var i = 0; i < rows.length; i++){     
    console.log("DepartmentId : \'"+rows[i]["deptId"]+"\', DepartmentName \'"+rows[i]["deptName"]+"\'");
  }
});

connection.end();

但是如果我使用 A+ Promise api A+ Promise API 则无法运行代码

如下图,

var Promise = require("promise");

var mySql = require("mysql");

var connection = mySql.createConnection({
  host : "localhost",
  user : "root",
  password : "rahul",
  database : "testDb" //schema
});

var p  = Promise.resolve(connection.connect());


var sqlQuery = p.then(function(con){
  return Promise.resolve(con.query);
});

sqlQuery.then(function(q){

 q("select * from departmentTbl").then(function(err,row,fields){
   if(err){
    console.log(err.stack);
   }

   for(var i = 0; i < rows.length; i++){        
    console.log("DepartmentId : \'"+rows[i]["deptId"]+"\', DepartmentName \'"+rows[i]["deptName"]+"\'");
   };

  }).done(function(){
    connection.end();   
 });
});

请告诉我哪里出了问题,为什么我无法解决 Promise。

我的代码甚至不会抛出错误

最佳答案

我能够使用下面的实现来解决 mysql Node 和 PromiseJS,如下所示,

 var Promise = require("promise");

 var mySql = require("mysql");

    var connection = mySql.createConnection({
    host : "localhost",
    user : "root",
    password : "rahul",
    database : "testDb" //schema
});

connection.connect();

var getDepartments = function(){
  return new Promise(function(resolve,reject){
    connection.query("select * from departmentTbl",function(err,rows,fields){

        if(err){                
            return reject(err);
        }else{              
            return resolve(rows);
        }

    }); // query
  }); // Promise
} // getDepartments

getDepartments().then(function(rows){   
  for(var i = 0; i < rows.length; i++){     
    console.log("DepartmentId : \'"+rows[i]["deptId"]+"\', DepartmentName \'"+rows[i]["deptName"]+"\'");
  } 
}).catch(function(e){
  console.log(e.stack);
});

connection.end();

关于javascript - 在 Node Mysql 中使用 Promise api 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38853260/

相关文章:

javascript - 在 Javascript 数组中查找字符串键

node.js - Electron js上的自签名证书错误

javascript - 使用 jQuery .promise() 调用 clearInterval()

javascript - 依次执行一批 Promise。一旦 Promise.all 完成,进入下一批

javascript - 这段代码中的 Promise 是如何工作的?

javascript - 在将事件类添加到 <a> 时隐藏侧导航栏的 <hr> 元素

javascript - 如何修复 localhost 中的 react cors 错误?

javascript - PHP 中的反向引用到 JS 正则表达式翻译

node.js - postgresql - 错误 : Connection terminated

javascript - 为什么 Jest 在 node-fetch 上失败,在导入时给出语法错误