有可能"创建数据库......"与pg-promise和PostgreSQL(9.5)?

时间:2018-03-11 21:32:39

标签: node.js postgresql pg-promise

问题是:

+

使用节点包' pg-promise'我似乎无法弄清楚是否有可能创建一个新的数据库。我可以连接到现有的数据库,在那里没有问题。但是,当我在没有数据库名称的情况下运行时,出现错误:

这就是我的尝试:

1) Can pg-promise be used to create a new database (schemas, et. al.)?

然后,我收到了这个错误:

host = host || '127.0.0.1'
port = port || '5432'

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

// database connection details
const pgConnectionOptions = {
  host: host,
  port: port,
  user: user,
  password: pass
}

// database instance
const localDB = pgp(pgConnectionOptions)

let escapedDbName = dbName.replace(/\"/g, '""');
let sql = 'CREATE DATABASE "' + escapedDbName + '"';

localDB
.any(sql)
.then((results) => {
  console.log('creation of database successful', results)
})
.catch((error) => {
  console.error('creation of database failed', error)
})

"杰夫"是我的ubuntu登录名。

1 个答案:

答案 0 :(得分:6)

首先,您需要使用有权创建新数据库的管理员帐户连接到现有数据库。

然后您可以通过常规查询创建新数据库......

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

const db = pgp({
    database: 'any-existing-db',
    port: 5432,
    user: 'postgres', // any admin user
    password: 'admin-password'
});

db.none('CREATE DATABASE $1:name', 'my_database')
    .then(data => {
        console.log('successfully created');
    })
    .catch(error => {
        console.log(error);
    });

我在本地运行这样的代码,它工作正常。