Vyhledávání na webu

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.“