如何使用 ES6 语法导入 pg-promise?

Jac*_*ell 8 javascript postgresql node.js ecmascript-6 pg-promise

我正在尝试使用 ES6 语法在 nodejs 服务器中设置 Postgres 数据库,但我认为我没有正确导入和初始化 pg-promise。如果我使用常见的 js 语法,我会执行以下操作:

// Create Database Connection
const pgp = require('pg-promise')({});
const db = pgp(config.db);

// Test connection
db.connect()
  .then((obj) => {
    console.log('Connected to database');
    obj.done(); // success, release connection;
  })
  .catch((error) => {
    console.error('ERROR:', error.message);
  });
Run Code Online (Sandbox Code Playgroud)

使用 ES6,我尝试执行以下操作,但连接只是挂起并且未完成或出错。

import pgPromise from 'pg-promise';

// Create Database Connection
const pgp = pgPromise({});
const db = pgp(config.db);

// Test connection
db.connect()
  .then((obj) => {
    console.log('Connected to database');
    obj.done(); // success, release connection;
  })
  .catch((error) => {
    console.error('ERROR:', error.message);
  });
Run Code Online (Sandbox Code Playgroud)

我搜索了 pg-promise 文档,但找不到任何有关使用 ES6 语法的信息。关于我应该改变什么的任何想法?

xMa*_*ank 7

正如我在文档中看到的那样,这是正确的。

使用初始化选项加载和初始化库:

const initOptions = {/* initialization options */};
const pgp = require('pg-promise')(initOptions);
Run Code Online (Sandbox Code Playgroud)

或没有初始化选项:

const pgp = require('pg-promise')();
Run Code Online (Sandbox Code Playgroud)

从连接创建数据库对象为 pgp(connection, [dc]):

const db = pgp(connection);
Run Code Online (Sandbox Code Playgroud)

forES6TypeScript语法

import pgPromise from 'pg-promise';

const pgp = pgPromise({/* Initialization Options */});

const db = pgp('postgres://username:password@host:port/database');

Run Code Online (Sandbox Code Playgroud)


Jac*_*ell 1

好吧,这很愚蠢,但我发现我的问题只是我需要更新 pg-promise 依赖项。我使用的是 8.5.1 版本,升级到 10.5.7 解决了这个问题。对于遇到此问题的其他人,您可以使用问题中编写的 ES6 代码,只需确保您的 pg-promise 依赖项是最新版本。