M.M*_*.M. 6 postgresql asynchronous node.js
我指的是下面的node-postgres包,但我想这个问题相当通用.
有一个简单的例子,你1)从顶级http请求处理程序中的池中获取(连接)连接(客户端),2)执行该处理程序内的所有业务,3)在你'之后将它释放回池中重做.
我想它适用于那个例子,但是一旦你的应用程序变得更大,这很快就会变得痛苦.
我正在考虑这两个选项,但我不太确定......
在我需要与db交谈的地方做"获取客户端+工作+发布客户端"的方法.
这似乎是一个不错的选择,但它不会导致每个顶级http请求占用多个连接/客户端(在我的项目的许多地方都有并行异步数据库调用)?
尝试将globaly共享引用分配给可通过的一个客户端/连接require()
这是一个好主意,实际上是否合理可行?是否有可能在所有丑陋的情况下很好地处理"回到池发布"(例如,并行异步内容中的错误)?
谢谢.
好吧,我花了一些时间试图弄清楚这一点。最后,经过一番考虑并受到John Papa 代码的影响,我决定使用database
这样的模块:
var Q = require('q');
var MongoClient = require('mongodb').MongoClient;
module.exports.getDb = getDb;
var db = null;
function getDb() {
return Q.promise(theDb);
function theDb(resolve, reject, notify) {
if (db) {
resolve(db);
} else {
MongoClient.connect(mongourl, mongoOptions, function(err, theDb) {
resolve(db);
}
});
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,当我需要执行查询时:
getDb().then(function(db) {
//performe query here
});
Run Code Online (Sandbox Code Playgroud)
至少对于 Mongodb 来说这是一个很好的实践,如下所示。
归档时间: |
|
查看次数: |
1176 次 |
最近记录: |