我已经阅读了节点-postgres的API文档。
它建议我们使用pg对象来创建池客户机。在pg.connect api文档中说:
connect方法从客户端池检索客户端,或者如果所有池客户端都繁忙且池未满,则connect方法将创建一个新客户端,直接将其第一个参数传递给客户端构造函数。
因此,根据建议,使用pg.connect是否意味着“使用pg对象创建池客户机”?如果不是,这到底意味着什么?
在我的实现示例中,我在我的路由中进行了几个查询:
app.get('/post', function(req, res) {
pg.connect(dbconfig, function(err, client, done) {
client.query('SELECT * FROM post', function(err, result) {
res.render('post/list', { posts: result.rows });
});
});
});
app.get('/post/new', function(req, res) {
res.render('post/new');
});
app.post('/api/v1/post', function(req, res) {
var b = req.body;
pg.connect(dbconfig, function(err, client, done) {
client.query('INSERT INTO post (title, content) VALUES ($1, $2)',
[b.title, b.content],
function(err, result) {
done();
res.redirect('/post');
});
});
});这是每次我想查询时调用pg.connect的正确方式吗?如果没有,还有什么更好的办法呢?
发布于 2013-11-08 02:15:21
根据pg.connect()处理池连接的文档,它看起来确实如此。不过,我建议您最好做一件事(假设您只有一组应用程序正在使用的凭据)。
如果我考虑这样做,我将致力于节省重复的工作/击键/错误的机会,并将pg.connect()包装在某种函数中,您可以使用它返回客户端。这将使您能够做以下更多的事情:
app.get('/post', function(req, res) {
db.run( function(client) {
client.query('SELECT * FROM post', function(err, result) {
res.render('post/list', { posts: result.rows });
});
});
});然而,考虑到你做事的方式,我不相信你能从这种方法中得到很多好处,所以我不认为你的方法有什么问题。
发布于 2014-08-16 08:53:36
现在这可能有点过时了,但是看看下面这个:https://github.com/aichholzer/Bodega
它将处理任何担心,并使您的编码经验更愉快一点。:)
https://stackoverflow.com/questions/17965518
复制相似问题