2016-07-23 7 views
0

私はHeroku Postgresを使用しています。アプリケーションでクエリを実行するたびに、接続は開いたままです。これは同時接続数が多すぎるためエラーとなります。接続の管理PostgreSQLとNode.js

私は少しのために自分のアプリケーションを使用した後の展開で、私はこのエラーを取得:

{"name":"error","length":109,"severity":"FATAL","code":"53300","file":"miscinit.c","line":"551","routine":"InitializeSessionUserId"} 

私はローカルで実行しているとき、私はこのエラーを取得:

{"name":"error","length":109,"severity":"FATAL","code":"53300","file":"miscinit.c","line":"551","routine":"InitializeSessionUserId"} 

これは方法Iであります私はデータベースに問い合わせるたびにクエリを処理します:

router.route('/campaigns') 
    .get(restrictTo('advertiser'), function(req, res) { 
     pg.defaults.ssl = true; 
     pg.connect(`DATABASE_URL`, function(err, client, done) { 
      if (err) { 
       console.log('Connection issue when retrieving data, error will be thrown: ' + JSON.stringify(err)); 
       throw err; 
      } else { 
       client.query(`SELECT * FROM campaign WHERE agentid = ${req.user.agentid};`, 
        function (err, result) { 
         if(err) 
          console.log(err.toString()); 
         res.render('console/campaigns', result); 
        }); 
      } 

     }) 
    }) 

接続は私が信じている閉鎖していません。どうすれば解決できますか?

+0

[pg-promise](https://github.com/vitaly-t/pg-promise)を使用している場合、この種の問題は発生しません。手動で接続する必要はないからですすべて。 –

+0

はい、それは私がやったことですが、私はこれを理解する前に一日中私を受け取りました。 – ocram

+0

@ vitaly-t 'pg-promise'に関する質問があります:http://stackoverflow.com/questions/38545958/return-in-pg-promise – ocram

答えて

0

私はあなたが接続を閉じるために各クエリが完了した後にclient.end();を使用すると思われると思います。