Я пытаюсь подключиться к моей Postgres БД, просто чтобы посмотреть, смогу ли я подключиться, у меня есть одна запись в ней. Но всякий раз, когда я пытаюсь подключиться, я получаю сообщение об ошибке подключения, почему это так?
Моя модель базы данных
'use strict';
import { Pool, Client } from 'pg';
export default class Postgresql {
private pool: Pool;
constructor(private database: string, private host: string, private port: string, private user: string, private password: string) { };
/* Create a PostgreSQL DB instance */
connect = (): Promise<Pool> => new Promise((resolve, reject) => {
this.pool = new Pool({
database: this.database,
host: this.host,
port: Number(this.port),
user: this.user,
password: this.password
});
this.pool.connect().then(() => {
resolve(this.pool);
}).catch(err => reject(err));
})
}
Моя служба базы данных, которая импортирует модель
import Postgresql from "@root/src/app/models/database.model";
const databaseService: {
pool: Postgresql['pool'];
init: () => Promise<string>;
execute: (query: string, params: any, next?: any) => Promise<any>;
} = {
pool: null,
init: () =>
new Promise((resolve, reject) => {
if (!databaseService.pool) new Postgresql(process.env.DATABASE, process.env.DATABASEHOST,
process.env.DATABASEPORT, process.env.DATABASEUSER, process.env.DATABASESECRET)
.connect()
.then((pool: Postgresql['pool']) => databaseService.pool = pool)
.catch((err: Error) => reject(err));
resolve();
}),
async execute(query, params, next?) {
let client = await this.pool.connect();
try {
const result = await client.query(query, params);
console.log(result);
next(null, result);
} catch (e) {
next(e, null);
} finally {
client.release();
}
}
}
export default databaseService;
вызов БД с сервера. js
databaseService.init();
let query = "SELECT * FROM ?";
let params = "postgres"
databaseService.execute(query, params);
и мой env var, я дважды проверил, что они были правильными, но все равно постил. я впервые пытаюсь подключиться к БД с помощью env var и сделать это через службу, поэтому, если я делаю что-то не так, пожалуйста, дайте мне знать
DATABASE=postgres
DATABASEHOST=localhost
DATABASEPORT=5432
DATABASEUSER=postgres
DATABASESECRET=password
(node:11020) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'connect' of null
at Object.<anonymous> (C:\Users\ENGU3002\Documents\Template\src\app\services\database.service.ts:20:38)
at Generator.next (<anonymous>)
at C:\Users\ENGU3002\Documents\Template\node_modules\tslib\tslib.js:110:75
at new Promise (<anonymous>)
at Object.__awaiter (C:\Users\ENGU3002\Documents\Template\node_modules\tslib\tslib.js:106:16)
at Object.execute (C:\Users\ENGU3002\Documents\Template\src\app\services\database.service.ts:16:24)
at C:\Users\ENGU3002\Documents\Template\src\app\server.ts:20:25
at Generator.next (<anonymous>)
at C:\Users\ENGU3002\Documents\Template\node_modules\tslib\tslib.js:110:75
at new Promise (<anonymous>)
(node:11020) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:11020) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.