Javascript 在节点Mysql不工作的情况下使用Promise api
我能够使用以下代码运行sql查询并从MySql数据库中获取记录Javascript 在节点Mysql不工作的情况下使用Promise api,javascript,node.js,promise,node-mysql,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
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();
var mySql=require(“mySql”);
var connection=mySql.createConnection({
主机:“本地主机”,
用户:“根”,
密码:“rahul”,
数据库:“testDb”//schema
});
connection.connect();
connection.query(“select*from departmentTbl”,函数(err、行、字段){
如果(错误){
console.log(err.stack);
}
对于(var i=0;i
但是如果我使用+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();
});
});
var承诺=要求(“承诺”);
var mySql=require(“mySql”);
var connection=mySql.createConnection({
主机:“本地主机”,
用户:“根”,
密码:“rahul”,
数据库:“testDb”//schema
});
var p=Promise.resolve(connection.connect());
var sqlQuery=p.then(函数(con){
返回承诺。解析(con.query);
});
sqlQuery.then(函数(q){
q(“从部门TBL中选择*)。然后(函数(错误、行、字段){
如果(错误){
console.log(err.stack);
}
对于(var i=0;i
请告诉我哪里出了问题,为什么我不能解决承诺
我的代码甚至没有抛出错误我可以通过mysql节点和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();
var承诺=要求(“承诺”);
var mySql=require(“mySql”);
var connection=mySql.createConnection({
主机:“本地主机”,
用户:“根”,
密码:“rahul”,
数据库:“testDb”//schema
});
connection.connect();
var getDepartments=function(){
返回新承诺(功能(解决、拒绝){
connection.query(“select*from departmentTbl”,函数(err、行、字段){
如果(错误){
退货拒绝(err);
}否则{
返回解析(行);
}
});//查询
})承诺
}//获取部门
getDepartments().then(函数(行){
对于(var i=0;i
我可以使用下面的实现解决mysql节点和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();
var承诺=要求(“承诺”);
var mySql=require(“mySql”);
var connection=mySql.createConnection({
主机:“本地主机”,
用户:“根”,
密码:“rahul”,
数据库:“testDb”//schema
});
connection.connect();
var getDepartments=function(){
返回新承诺(功能(解决、拒绝){
connection.query(“select*from departmentTbl”,函数(err、行、字段){
如果(错误){
退货拒绝(err);
}否则{
返回解析(行);
}
});//查询
})承诺
}//获取部门
getDepartments().then(函数(行){
对于(var i=0;i
我认为您的承诺处理程序的函数签名不正确。它不应包括err
。您应该传递第二个处理程序(拒绝处理程序),该处理程序接受gets err参数,或者链接一个.catch()
方法。我可以解决它,请检查。谢谢。我认为您的承诺处理程序的函数签名不正确。它不应包括err
。您应该传递第二个处理程序(拒绝处理程序),该处理程序接受gets err参数,或者链接一个.catch()
方法。我可以解决它,请检查。谢谢