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