Подключиться к Heroku Postgres - сервер не поддерживает SSL-соединения - PullRequest
0 голосов
/ 16 июня 2020

Я следовал официальному руководству Heroku , чтобы настроить Postgres db, который, похоже, прошел хорошо, так как я могу получить доступ и проверить, существует ли моя таблица.

Однако я похоже, не может получить доступ к этой БД с помощью метода и кода, которые они также предоставляют ... Я получаю общую ошибку:

The server does not support SSL connections

Я что-то пропустил c в моем коде?

const express = require('express');
const {Pool} = require('pg');

const DATABASE_URL = 'postgresql://postgres:<Password>@localhost:5432/<App-Name>';
const PORT = '8080';
const TABLE_NAME = <table-name>;

const db = new Pool({
    connectionString: DATABASE_URL,
    ssl: {
        rejectUnauthorized: true
    }
});

express()
    .use(express.static(__dirname))
    .set('view engine', 'ejs')
    .get('/', (req, res) => res.send('hello world'))
    .get('/db', async (req, res) => {
        try {
            const client = await db.connect();
            const result = await client.query('SELECT * FROM TABLE_NAME');
            res.send(result);
            client.release();
        } catch (err) {
            console.error(err);
            res.send("Error " + err);
        }
    })
    .listen(PORT, () => console.log(`Listening on port: ${PORT}`));

1 Ответ

1 голос
/ 16 июня 2020

Я также использовал pg для Postgres, и он работает с этим кодом:

    pool = new Pool({
        connectionString: process.env.DATABASE_URL,
        ssl: true,
    });

Совет: если вы хотите работать как на heroku, так и на локальном (для тестирования), небольшой фрагмент:

// if on heroku
if (process.env.DATABASE_URL) {
    pool = new Pool({
        connectionString: process.env.DATABASE_URL,
        ssl: true,
    });
} else {
// if on local
    pool = new Pool({
        user: process.env.D_user,
        password: process.env.D_password,
        port: process.env.D_pport,
        host: process.env.D_host,
        database: process.env.D_database
    });
}

PS Локальные process.env создаются вручную python-dotenv

...