node.js - Nodejs 没有从类模块中的插入函数返回 mysql 数据
问题描述
var mysql = require('mysql')
const pool = mysql.createPool({
connectionLimit : 200,
host : 'localhost',
user : 'root',
password : '',
database : 'taxi'
});
class Pool{
check(){
pool.getConnection(function(err,connection){
if(err){
console.log(err.sqlMessage)
}else{
console.log("connected")
connection.release()
}
})
}
async insert(table,column,data, callback){
pool.getConnection(function(err,connection){
if(err){
console.log(err.sqlMessage)
}else{
var sql = "Insert Into " + table + "("+column+") VALUES ("+data+") "
connection.query(sql, function(err, result){
connection.release()
if(err){
callback(err.sqlMessage)
}else{
return(result)
}
})
}
})
}
}
module.exports = Pool
无法从插入函数返回数据,它返回未定义。我想创建一个 mysql 类模块,可以从其他类调用,并使用数据库类文件中的函数插入、获取和更新数据。
解决方案
如果您声明insert
函数,async
您应该返回Promise
结果并且不要使用callback
:
async insert(table,column,data){
return new Promise((resolve, reject) => {
pool.getConnection(function(err,connection){
if(err){
console.log(err.sqlMessage)
reject(err)
}else{
var sql = "Insert Into " + table + "("+column+") VALUES ("+data+") "
connection.query(sql, function(err, result){
connection.release()
if(err){
reject(err)
}else{
resolve(result)
}
})
}
})
});
}
推荐阅读
- javascript - 如何获取对象并以 html javascript 显示
- java - 在 Web 逻辑中设置特定于 ear/war 应用程序的属性
- java - 如何在 ThreadPoolExecutor 中重生线程?
- bootstrap-4 - 如何在其他行中使用订单列?
- javascript - 谷歌地图不显示标记标题
- mongodb - 如何在 mongodb 中联合或组合 2 个已经分组的结果,如 SQL 中 2 个 CTE 查询的联合?如何通过查询从两组中获取累积总和?
- python - 为什么 pd.read_csv() 和 pd.read_excel() 的输出会提供具有不同功能列标题的数据框?
- javascript - 折叠使用 vuejs 呈现的表格中的空单元格
- javascript - moment.js 和 moment.php 是一样的吗?
- java - 如何模拟从内部类调用的类成员对象方法