Как подключиться к базе данных Heroku PostgreSQL из Express?

#node.js #postgresql #express #heroku

Вопрос:

Я пытаюсь развернуть приложение PERN в Heroku. Я создал базу данных Heroku Postgres и развернул в Heroku свое интерфейсное приложение React — Node/Express.

Как мне подключиться к базе данных из моего экспресс-кода? Я использовал npm pg до сих пор, когда приложение все еще было локальным.

Кажется, я не могу найти никакой информации об этом в Интернете…

Ответ №1:

Вам нужно будет импортировать a Pool из модуля postgre, затем задать строку подключения. Это должно выглядеть примерно так:

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

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

Затем вы можете запросить базу данных с помощью чего-то похожего на это:

 exports.dbAction = function(req, res) {

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';

pool.query("select * from exampleTable", (err, 
results) => {
        if (err) {
            console.log(err);
            throw err;
        }
    res.json(results.rows);
    });
  
}
 

process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; указывает узлу разрешить использование ненадежных сертификатов (ненадежный = не проверен центром сертификации). Это не рекомендуемая настройка в производственном режиме. Однако, пока он находится в разработке, это удобный обходной путь.

Комментарии:

1. Это сработало! Спасибо. Можете ли вы объяснить эту линию process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; ?

2. @StijnKlijn Cool. И да, это указывает узлу разрешить ненадежные сертификаты (ненадежный = не проверен центром сертификации). Это не рекомендуемая настройка в производственном режиме. Однако, пока он находится в разработке, это удобный обходной путь.