NodeJS用于Express应用程序的DB2连接池

时间:2017-09-23 22:39:04

标签: node.js express db2

对于带有IBM DB2的NodeJS,我看到很少的在线帖子。我是NodeJS的新手,并且在为我的网络应用程序配置连接池时遇到问题。我在本地运行单一连接的节点应用程序成功,但不知道如何配置连接池。下面的代码是我如何进行单一连接。

DBConnection JS:

module.exports = function(dbConnection)
{
 var Pool = require('ibm_db').Pool;
 var pool = new Pool();

 pool.open("MY_CONNECTION_STRING",function(err,connection){

  //error handling logic ...

  dbConnection(connection);
 });
}

应用程序监听器js:

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

app.listen(8080,function(){
 console.log("server started..);
});

require('./DBConnection')(function(connection){

  app.get('/getEmpId',function(req,res){
   connection.query("MY_SQL_QUERY",function(error,results,fields){
    //some other logic

    res.send(results[0]);   

    //Closing connection     
    connection.close(function(err2) {
        if(err2) console.log(err2);
    });
   });
  });      
}

需要您建议连接池,我可以在并发用户访问时为每个请求使用一个连接,并在提供请求后关闭连接。

1 个答案:

答案 0 :(得分:2)

您可以查看IBM node-ibm_db driver提供的简短示例。它有Connection Pooling部分。驱动程序重用node-odbc池,您需要调用Pool对象上的打开/关闭调用。以下是从node-ibm_db网站获取的示例:

var Pool = require("ibm_db").Pool
    , pool = new Pool()
    , cn = "DATABASE=dbname;HOSTNAME=hostname;PORT=port;PROTOCOL=TCPIP;UID=dbuser;PWD=xxx";

pool.open(cn, function (err, db) {
    if (err) {
        return console.log(err);
    }

    //db is now an open database connection and can be used like normal
    //if we run some queries with db.query(...) and then call db.close();
    //a connection to `cn` will be re-opened silently behind the scense
    //and will be ready the next time we do `pool.open(cn)`
});