我可以使用以下代码运行 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/