【问题标题】:Having Trouble Initializing Postgresql Database Through PG-Promise无法通过 PG-Promise 初始化 Postgresql 数据库
【发布时间】: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


【解决方案1】:

这是标准的 TypeScript 配置标志 - esModuleInterop。设置为 true 时,导入语法为 import pgPromise from 'pg-promise';,而默认为 false 时,语法为 import * as pgPromise from 'pg-promise';

该库为您提供了默认 TypeScript 配置的示例。

【讨论】:

    猜你喜欢
    • 2016-03-26
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2023-04-08
    • 2019-08-08
    • 1970-01-01
    相关资源
    最近更新 更多