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