【发布时间】:2013-04-25 11:00:00
【问题描述】:
我有一个通过 node-postgres 使用 PostgreSQL 的 Node.js 应用程序。我已经开始收到错误“抱歉,已经有太多客户”,这让我想知道我是否创建了太多客户对象,或者我是否应该手动断开它们。目前,我正在为每个访问数据库的函数调用创建一个新的客户端对象。例如:
var db {
checkDetails : function() {
var client = new pg.Client(conString);
...
},
amendDetails : function() {
var client = new pg.Client(conString);
...
},
...
}
这是正确的还是我应该在其他地方创建一个客户端对象?还是我应该打电话给client.end()?由于我使用的回调样式的示例没有包含这个,我认为它是不必要的。
【问题讨论】:
-
您应该使用
Singleton数据库连接,这意味着您的代码中应该只有一个客户端来处理所有查询。而且您不必使用end() -
另外,你应该监听数据库
close事件,如果连接失败,重新连接 -
我注意到客户端
connect是异步的,所以使用EventEmitter。我不熟悉node-postgres,但这就是我在cassandra中的做法(gist.github.com/wwwy3y3/5412976)
标签: database node.js postgresql database-connection