当客户端进入新页面时断开PostgreSQL

时间:2016-07-28 00:56:33

标签: node.js postgresql real-time

我正在尝试构建一个实时网页并使用postgreSQL作为我的数据库。我使用node.js和express来构建后端的东西。由于这是一个实时网页,需要经常更新信息,我与postgreSQL建立了长期联系,看起来像:

app.get('/:A/:B', function(req,res){

  var A = req.params.A;
  var B = req.params.B;
  var client = new pg.Client(config[A][B]);

  client.connect(function(err){
    if (err) {
      console.log("Error occurred when try to connect the database",err);
    }
    else {
      console.log("Connected to the database");
    }
  });
  Do some queries with current database connection...
}

问题是,当我在浏览器中更改A和B的值并尝试连接到新数据库时,我没有与旧数据库断开连接,因此我的页面上的信息仍然来自旧数据库。我是节点和Web开发的新手。当客户端尝试转到新网址时,有人能告诉我如何与旧数据库断开连接吗?

1 个答案:

答案 0 :(得分:0)

我认为不是为每个请求创建连接的好方法。如果A-B变体的大小有限,那么在启动时创建连接池会更好。

app.get('/:A/:B', function(req, res, next){ // next to forwarding error
     var A = req.params.A;
     var B = req.params.B;
     var client = new pg.Client(config[A][B]);

      client.connect(function(err){
          if (err) 
              return next(err); // go to error-middleware

          console.log("Connected to the database");

          // Do some queries with current database connection...
          // Keep it mind that they're also asynchronous, so better way is use promises or async (https://github.com/caolan/async)

          client.end(function (err) {
              if (err) 
                 next(err);
          });
      });
}

// Error middleware
app.use(function(err, req, res, next) {
    console.log(req.url, err.message);
})