Ответ 1
Вы должны инициализировать соединение с базой данных только один раз. Если он должен быть разделен между модулями, тогда поместите его в свой собственный файл модуля, например:
const initOptions = {
// initialization options;
};
const pgp = require('pg-promise')(initOptions);
const cn = 'postgres://username:[email protected]:port/database';
const db = pgp(cn);
module.exports = {
pgp, db
};
См. поддерживаемый Параметры инициализации.
ОБНОВЛЕНИЯ
И если вы попытаетесь создать несколько объектов базы данных с теми же данными о соединении, библиотека выведет предупреждение в консоль:
WARNING: Creating a duplicate database object for the same connection.
at Object.<anonymous> (D:\NodeJS\tests\test2.js:14:6)
Это указывает на то, что шаблон использования базы данных плох, т.е. вы должны совместно использовать объект базы данных, как показано выше, а не воссоздавать его снова и снова. А начиная с версии 6.x это стало критически важным: каждый объект базы данных поддерживает свой собственный пул подключений, поэтому их дублирование дополнительно приведет к плохому использованию соединения.
Кроме того, нет необходимости экспортировать экземпляр библиотеки pgp
- initialized. Вместо этого вы можете просто сделать:
module.exports = db;
И если в каком-то модуле вам нужно использовать корень библиотеки, вы можете получить к нему доступ через свойство $config:
const db = require('../db'); // your db module
const pgp = db.$config.pgp; // the library root after initialization