2017-01-03 66 views
0

我是新增在节点js中进行池化。我正尝试在crud_new_op.js文件中启动池连接,并将连接导出到db_crud.js并将其记录在控制台中。节点js中的数据库池中未定义的“连接”

我尝试不同的方法,但我总是得到 “未定义” 因我从池出口连接...

db_crud.js

var express = require('express'); 
var app = express(); 

var crud = require('./routes/crud_op_new.js'); 

app.get('/search',(req,res)=>{ 
console.log(crud.connection); 
}); 

app.listen(8044); 

crud_op_new.js

var mysql = require('mysql'); 

var conn = require('../config/db_config.js'); 

var db = conn.database; 

var pool = mysql.createPool({ 
connectionLimit : 100, 
host : db.host, 
user : db.user, 
password : db.password, 
database : db.database 
}); 

pool.getConnection(function(err,connection){ 
if(!err){ 
    exports.connection; 
} 
else { 
    console.log("Error at pool creation"); 
} 
}); 

那里我没有错误的数据库连接。

回答

0

您应该返回连接

db_crud.js

var express = require('express'); 
var app = express(); 
var crud = require('./routes/crud_op_new.js'); 

app.get('/search',(req,res)=>{ 
crud.connection(function (con) { 
    console.log(con); 
}); 
}); 

app.listen(8044); 

crud_op_new.js

var mysql = require('mysql'); 

var conn = require('../config/db_config.js'); 

var db = conn.database; 

var pool = mysql.createPool({ 
connectionLimit : 100, 
host : db.host, 
user : db.user, 
password : db.password, 
database : db.database 
}); 

exports.connection = function (callback) { 
    pool.getConnection(function(err,con){ 
    if(err) throw err; 
    return callback(con); 
    }); 
} 
+1

'exports.connection()'仍然会返回'undefined' – Adam

+0

不可以。我已经尝试过了。它会显示连接对象。 – digit

+0

我也变得相同undefined – VisheshRaju

2

你为什么不只是传递向前pool.getConnection功能?

// crud_op_new.js 
exports.connection = pool.getConnection.bind(pool); 

// db_crud.js 
crud.connection(function (err, con) { 
    if (err) throw err; 
    console.log(con); 
}); 
+0

这应该是最简单的方式,而不需要传递任何回调。 – digit

+0

这也适用!谢谢...也很简单 – VisheshRaju