Я использую аутентификацию Lucia, у которой есть адаптеры для Postgres и node-postgres, но нет адаптера специально для pg-promise. Когда я пытаюсь создать экземпляр адаптера базы данных для Люсии, он жалуется, что первый параметр не является «Клиентом» или «Пулом». После долгих усилий мне удалось заставить его работать, объявив его следующим образом:
import pgPromise from 'pg-promise';
const pgp = pgPromise({});
export const database = pgp(DATABASE_URL_LOCAL);
const adapter = new NodePostgresAdapter(database.$pool as unknown as pg.Pool, {
user: 'auth_user',
session: 'user_session'
});
Речь идет о: data.$pool, столь же неизвестном, как и pg.Pool. Это лучший способ сделать это или есть более чистый способ?





Ваш шаблон использования верен, нет лучшего способа, чем Lucia добавить поддержку pg-promise.
Внутри pg-promise этот пул имеет тип IPool, объявленный внутри, который объявляет только подмножество свойств и методов, которые можно безопасно использовать внутри pg-promise. Поэтому при интеграции вручную, как вы, этой сигнатуры интерфейса недостаточно, и поэтому вы сначала делаете ее any, а затем переделываете в нужный тип.