Typescript 函数式Javascript数据库,但在类中

Typescript 函数式Javascript数据库,但在类中,typescript,Typescript,这通常是我连接数据库的方式,但我甚至不确定它是否工作。但是我需要用一个名为Postgresql的类来包装它 "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: pr

这通常是我连接数据库的方式,但我甚至不确定它是否工作。但是我需要用一个名为Postgresql的类来包装它

"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 };
我将从database.service.ts文件访问这个模型,并从那里调用connect()方法

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 };
从“./models/common/database/index”导入{Postgresql}”;
const express=要求(“express”);
const router=express.router();
const数据库服务:{
//不确定这是否是创建可重用GET服务的正确方法
//GET方法需要config(ENV VAR的对象)并返回string/json/obj(?)类型的承诺
get:(config:object)=>Promise;
} = {
get:(config:object)=>
新承诺((解决、拒绝)=>{
//如果Postgresql.connect为false,则返回错误,不确定连接失败时是否返回false
如果(!Postgresql.connect)拒绝(新错误(`cannotconnecttopostgres`));
connect(函数(err、client、done){
//硬编码查询,不确定如何进行动态
让query=“从产品中选择*”;
//客户端是池的一部分吗
查询(查询,函数(错误,结果){
完成();
控制台日志(结果);
});
});
})
};

在我的databaseService类中,它说Postgresql不包含属性connect,但我想我理解它是一个方法。但是,每当我尝试在类中创建属性时,它都不允许我“需要构造函数、方法、访问器或属性。”

不清楚您要做什么,但是由于您已经创建了一个
Postgresql
类,您需要先实例化它的一个实例,然后才能使用它(通过
new Postgresql()
)。我真的不明白为什么你的构造函数会接受所有这些参数,因为你实际上没有使用这些值。最后,我希望能够使用服务查询我的数据库为什么要这样做?不清楚你想做什么,但既然你创建了一个
Postgresql
类,您需要先实例化它的一个实例,然后才能使用它(通过
new Postgresql()
)。我真的不明白为什么你的构造函数会接受所有这些参数,因为你实际上并不使用这些值。最后,我希望能够使用服务对我的数据库进行查询。你为什么要这样做?
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);
        });
      });
    })
};