TypeScript - Funkční JavaScriptová databáze, ale v třídě
"use strict";
import { Pool, Client } from "pg";
const pool = new Pool();
let config = {
database: process.env.DATABASE,
host: process.env.HOST,
port: Number(process.env.PORT),
user: process.env.USERNAME,
password: process.env.SECRET
};
function connect() {
pool.connect(this.config);
}
export { pool };
Tohle je obvykle způsob, jak bych se připojil k databázi, ani si nejsem jistý, jestli to vůbec funguje. Ale potřebuji, aby to bylo zabalené do třídy nazvané Postgresql
const async = require("async");
class Postgresql {
constructor(
database: string,
host: string,
port: number,
user: string,
password: string
) {}
// Create a PostgreSQL DB instance
connect() {
let pool = new Pool({
database: process.env.DATABASE,
host: process.env.HOST,
port: Number(process.env.PORT),
user: process.env.USERNAME,
password: process.env.SECRET
});
}
}
export { Postgresql };
K tomuto modelu budu přistupovat z souboru database.service.ts a zavolám z něj metodu connect().
import { Postgresql } from "../models/common/database/index";
const express = require("express");
const router = express.Router();
const databaseService: {
// Not sure if this is the proper way to create reusable GET service
// GET method requires config(object of ENV VAR) and returns a Promise of type string/json/obj (?)
get: (config: object) => Promise<string | JSON | object>;
} = {
get: (config: object) =>
new Promise((resolve, reject) => {
// If the Postgresql.connect is false return error, not sure if when the connection fails if it even returns false
if (!Postgresql.connect) reject(new Error(`Can not connect to Postgres`));
Postgresql.connect(function(err, client, done) {
// Hardcoded query, not sure how to make dynamic
let query = "SELECT * FROM products";
// Is the client part of the pool
client.query(query, function(err, result) {
done();
console.log(result);
});
});
})
};
Ve své třídě databaseService se mi zobrazuje, že Postgresql neobsahuje vlastnost connect, ale myslím, že chápu, že jde o metodu. Ale kdykoli se pokusím vytvořit vlastnost ve třídě, nedovolí mi to, „Očekával se konstruktor, metoda, akcesor nebo vlastnost.“