我正在尝试将PostgreSQL数据库添加到heroku上的现有nodejs项目中。我根本无法访问本地版本的数据库,也无法写入heroku数据库。 以下是我尝试过的代码的一部分:
const { Client } = require('pg');
const client = new Client({
connectionString: process.env.DATABASE_URL,
ssl: true,
});
client.connect();
// client
let qu = 'SELECT table_schema,table_name FROM information_schema.tables;';
//qu = 'CREATE TABLE test (name varchar(40));';
//qu = 'SELECT * FROM test;';
// qu = 'INSERT INTO test name VALUES("testasdf");';
// qu = 'CREATE DATABASE X
client.query(qu, (err, res) => {
//console.log("trying");
if (err) throw err;
for (let row of res.rows) {
console.log(JSON.stringify(row));
}
client.end();
});
我已尝试按照此处的说明操作:https://devcenter.heroku.com/articles/heroku-postgresql
但我无法访问本地数据库或对远程数据库执行任何操作。
以下是本地错误消息:
(node:8402)UnhandledPromiseRejectionWarning:错误:用户密码验证失败" ..." 在Connection.parseE(... / theland / node_modules / pg / lib / connection.js:553:11) 在Connection.parseMessage(... / theland / node_modules / pg / lib / connection.js:378:19) 在TLSSocket。 (... / theland / node_modules / PG / LIB / connection.js:119:22) 在emitOne(events.js:116:13) 在TLSSocket.emit(events.js:211:7) 在addChunk(_stream_readable.js:263:12) 在readableAddChunk(_stream_readable.js:250:11) 在TLSSocket.Readable.push(_stream_readable.js:208:10) 在TLSWrap.onread(net.js:597:20) (node:8402)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误源于在没有catch块的情况下抛出异步函数,或者拒绝未使用.catch()处理的promise。 (拒绝ID:1) (节点:8402)[DEP0018]弃用警告:不推荐使用未处理的拒绝承诺。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。
我不知道如何在远程桌面上创建表格。
我在Linux上运行 node-v = 8.11.2 npm-v = 6.1.0 pg:^ 7.4.3
我也在使用psql,没有GUI。
感谢您的帮助。
EDIT --- 我应该在哪里添加身份验证?如果我添加身份验证并且不希望别人能够成为我的数据库的管理员,是否需要从github获取脚本?
答案 0 :(得分:0)
用户“...”的密码验证失败
显然,您没有为用户使用正确的密码。好消息是有服务器响应您的请求。
未处理的承诺拒绝
有一个错误,可能会抛出:
if (err) throw err;
你似乎不会在某处抓到它,你只是扔它。尝试将其放入一些try-catch-block中,例如像
function queryDatabase() {
try {
const client = new Client({
connectionString: process.env.DATABASE_URL,
ssl: true,
});
client.connect();
// client
let qu = 'SELECT table_schema,table_name FROM information_schema.tables;';
//qu = 'CREATE TABLE test (name varchar(40));';
//qu = 'SELECT * FROM test;';
// qu = 'INSERT INTO test name VALUES("testasdf");';
// qu = 'CREATE DATABASE X
client.query(qu, (err, res) => {
//console.log("trying");
if (err) throw err;
for (let row of res.rows) {
console.log(JSON.stringify(row));
}
client.end();
});
} catch (error) {
// if you need further help, remember to provide this error here.
console.log(error);
}
}