首页 > 解决方案 > 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 类模块,可以从其他类调用,并使用数据库类文件中的函数插入、获取和更新数据。

标签: node.js

解决方案


如果您声明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)
                   }
               })
            }
            
        })
      });
    }

推荐阅读