typescript - Funktionell Javascript-databas men i en klass


"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 };

Det här är normalt hur jag skulle ansluta till DB, inte ens säker på om det fungerar. Men jag behöver få det inlindat i en klass som heter 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 };

Jag kommer att få åtkomst till denna modell från en database.service.ts-fil och anropa connect()-metoden därifrån.

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);
        });
      });
    })
};

I min databaseService-klass står det att Postgresql inte innehåller en egenskap connect, men jag tror att jag förstår att det är en metod. Men varje gång jag försöker skapa en egenskap i klassen, tillåter den det inte, "En konstruktor, metod, åtkomstmetod eller egenskap förväntades."