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

6za6bjd0  于 2023-01-25  发布在  PostgreSQL
关注(0)|答案(3)|浏览(171)

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

// 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);
  });

使用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);
  });

我搜索了pg-promise文档,没有找到任何关于使用ES6语法的内容。有什么建议吗?

piztneat

piztneat1#

是否有错误信息?Nodejs需要特定的条件才能支持es模块,首先确保您已经正确地引入了该模块。

// index.mjs
import pgPromise from 'pg-promise';
const pgp = pgPromise({});
console.log(pgp);

然后使用--experimental-modules执行

node --experimental-modules index.mjs

更多详情https://blog.logrocket.com/es-modules-in-node-js-12-from-experimental-to-release/

tcomlyy6

tcomlyy62#

正确的,因为我可以在文档中看到.
使用“初始化选项”加载和初始化库:

const initOptions = {/* initialization options */};
const pgp = require('pg-promise')(initOptions);

或不带初始化选项:

const pgp = require('pg-promise')();

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

const db = pgp(connection);

对于ES6TypeScript语法

import pgPromise from 'pg-promise';

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

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

wnrlj8wa3#

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

相关问题