узел js heroku взаимодействует с postgresql - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь добавить базу данных 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

, но я не могу получить доступ к локальной базе данных или сделать что-либо дляудаленный.

Вот локальное сообщение об ошибке:

(узел: 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: необработанное отклонение обещания.Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().(идентификатор отклонения: 1) (узел: 8402) [DEP0018] Предупреждение об устаревании: отклонения необработанного обещания устарели.В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом завершения.

Я не знаю, как создать таблицу на удаленной.

Я работаю в Linux с node-v = 8.11.2 npm-v = 6.1.0 pg: ^ 7.4.3

Я тоже использую psql, без графического интерфейса.

Спасибоза помощь.

РЕДАКТИРОВАТЬ --- Где я должен добавить аутентификацию?Нужно ли снимать скрипт с github, если я добавляю аутентификацию и не хочу, чтобы люди могли быть администраторами для моей базы данных?

1 Ответ

0 голосов
/ 09 июня 2018
  1. Ошибка аутентификации пароля для пользователя "..."

Очевидно, вы не используете правильный пароль для пользователя.Положительной новостью является то, что сервер отвечает на ваш запрос.

Необработанное отклонение обещания

Возможно, здесь возникла ошибка:

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