Я пытаюсь добавить базу данных PostgreSQL в свой существующий проект nodejs на heroku. У меня возникли проблемы с доступом к локальной версии базы данных вообще, а также возникли проблемы с записью в базу данных 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) (узел: 8402) UnhandledPromiseRejectionWarning: отказ от необработанного обещания. Эта ошибка возникла либо путем броска внутри async-функции без блока catch, либо путем отказа от обещания, которое не обрабатывалось с помощью.catch(). (идентификатор отклонения: 1) (узел: 8402) [DEP0018] Устаревание. Предупреждение. Отклонения от необработанных обещаний устарели. В будущем обещание отклонения, которое не обрабатывается, приведет к завершению процесса Node.js с ненулевым кодом выхода.
Я не знаю, как создать таблицу на удаленном.
Я работаю на Linux с узлом-v = 8.11.2 npm-v = 6.1.0 pg: ^ 7.4.3
Я тоже использую psql, нет GUI.
Спасибо за помощь.
EDIT--- Где я должен добавить аутентификацию? Мне нужно снять скрипт с github, если я добавлю аутентификацию и не хочу, чтобы люди могли быть админами для моей базы данных?
аутентификация паролей для пользователя "..."
Очевидно, что вы не используете для пользователя правильный пароль. Положительная новость заключается в том, что сервер отвечает на ваш запрос.
Отказ от необработанного обещания
Произошла ошибка, вероятно, брошенная здесь:
if (err) throw err;
Вы, кажется, не поймаете его где-то, вы только бросаете его. Попробуйте поместить его в блок try-catch, например, например,
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);
}
}