【发布时间】:2019-05-24 09:03:39
【问题描述】:
我对 Express/Postgresql 完全陌生,我正在尝试学习它们来创建 Web 应用程序。经过一番摸索,我决定用 TypeScript 开发我的后端。我成功地将所有其他文件从 JavaScript 转换为 TypeScript,但我仍然不知道如何在 TypeScript 中初始化 pg-promise 连接!
我一直在尝试遵循此链接中的 TypeScript 指南。 https://github.com/vitaly-t/pg-promise/tree/master/typescript
// Initialize the PostGres database conneciton for use throughout
the entire application
import {IMain, IDatabase} from 'pg-promise';
import * as pgPromise from 'pg-promise';
const pgp: IMain = pgPromise({
query(e: any) {
console.log('QUERY RESULT:', e.query);
},
receive(data: any, result: any, e: any) {
console.log(`DATA FROM QUERY ${e.query} WAS RECEIVED.`);
}
});
const connection: any = {
host: 'localhost',
port: 5432,
database: 'RushHub',
user: 'RyanArifin',
password: null
}
const db: IDatabase<any> = pgp(connection);
export {
db
};
我目前收到错误“TS2349:无法调用类型缺少调用签名的表达式。类型'typeof pgPromise'没有兼容的调用签名。”当我尝试设置初始化选项时出现此错误。任何帮助将不胜感激,谢谢!
【问题讨论】:
-
使用pg-promise-demo 作为参考,因为它在那里工作正常。
-
谢谢!我实际上也在看这个,我想知道如何在没有“IExtensions”接口的情况下初始化数据库(或者它是否需要它才能工作)?我问的原因是因为“IExtension”,据我了解,只是扩展了“UsersRepository”和“ProductsRepository”扩展,我在我的小程序中不需要它们(截至目前)。有没有办法在没有 IExtension 接口的情况下创建初始化选项?谢谢!
-
没关系,我找到了问题所在。显然在 Javascript ES6 中,你需要使用“import pgPromise from 'pg-promise'”而不是“import * as pgPromise from 'pg-promise';”。
标签: postgresql typescript pg-promise