2016-12-09 3 views
1

Я пытаюсь написать REST API, который на основе полезной нагрузки запроса выбирает базу данных и выполняет определенные действия.Как закончить приложение «pg-prom»

В соответствии с документацией я освобождаю объект общего соединения в конце операции и следую за ним, завершая приложение pgp.

var pgp = require('pg-promise')(); 

    var connection = { 
     user: 'generaluser', //env var: PGUSER 
     database: 'seeddb', //env var: PGDATABASE 
     password: '$$$$$$$', //env var: PGPASSWORD 
     host: 'localhost', // Server hosting the postgres database 
     port: 5432 //env var: PGPORT 
    }; 

    var sco; 

    module.exports = { 
     getuser: function(req, res) 
     { 
     Account.findOne({ select: [ 'database' ], where: { appid: req.body.appid } }) 
     .then(function (result) 
     { 
      connection.database = result.database; 
      var db = pgp(connection); 
      return db.connect(); 
     }) 
     .then(function (obj) 
     { 
      sco = obj; 
      return sco.any("select * from users"); 
     }) 
     .then(function (result) 
     { 
      console.log(result); 
      return sco.done(); 
     })  
     .done(function() 
     { 
      pgp.end(); 
      return res.ok("Done"); 
     }); 
     } 
    }; 

Несмотря на это, я получаю ошибку ниже от второго API вызова (в той же базе данных) и далее:

WARNING: Creating a duplicate database object for the same connection. 

Может кто-то помочь мне с любым из следующих

  • Повторное использование объекта соединения pgp при последующих вызовах
  • Завершите приложение должным образом в конце каждого звонка

Благодаря

ответ

1

Прекратить применение правильно в конце каждого вызова

Вы должны абсолютно НЕ делать это, выключая весь пул соединений после каждого запроса ужасная идея.

повторное использование PGP объекто соединение на последующих вызовах

Что усложнение? Вы спрашиваете, как повторно использовать объекты в Node.js?

См. Также: Where should I initialize pg-promise.

И вам следует избегать использования метода db.connect, так как это не очень хороший способ использования рамки. Вы должны полагаться только на автоматические соединения;)

+1

Я реализовал уровень кэша в приложении, чтобы сохранить соединения db через вызовы API. –

Смежные вопросы