我有一个Node.js应用程序通过node-postgres使用PostgreSQL。我已经开始收到错误“对不起,客户已经太多了”,这让我想知道我是否创建了太多的客户端对象,或者是否应该手动断开它们。目前,我正在创建一个访问数据库的每个函数调用的新客户端对象。例如:节点应该在什么时候创建数据库连接?
var db {
checkDetails : function() {
var client = new pg.Client(conString);
...
},
amendDetails : function() {
var client = new pg.Client(conString);
...
},
...
}
这是正确的还是应该在其他地方创建一个客户端对象?或者我应该打电话给client.end()
?作为我使用的回调风格的例子没有包括这个,我认为这是没有必要的。
你应该使用'Singleton'数据库连接,这意味着你的代码中只有一个客户端可以处理所有的查询。并且你不必使用'end()' – williamC 2013-05-01 12:49:27
也应该监听数据库'close'事件,如果连接失败,只需重新连接 – williamC 2013-05-01 12:50:30
我注意到客户端'connect'是异步的,所以使用'EventEmitter '。我不熟悉'node-postgres',但这是我在cassandra中做到的(https://gist.github.com/wwwy3y3/5412976) – williamC 2013-05-01 13:15:04