Viji
@Viji
DevOps Engineer

Как отловить ошибку соединения с POSTGRESQL в node.js?

Имеется код следующего модуля (js file):

const { Pool } = require('pg');
const pool = new Pool({
    host: process.env.POSTGRESHOST,
    port: process.env.POSTGRESPORT,
    database: process.env.POSTGRESDATABASE,
    user: process.env.POSTGRESUSER,
    password: process.env.POSTGRESPASSWORD,
    connectionTimeoutMillis: 500,
    ssl: true
});

module.exports.execute = async ({ x1, x2, connection_dataId, noteType, note, idX, typeOfInstertable, idOfDocument, idType }) => {
    let checkResult;
    console.log("Current connection pool : ", pool);
    const connection_data = await pool.connect();
    try {
        // console.log("After pool.connect()" + JSON.stringify(connection_data));
        await connection_data.query('BEGIN')
        const tResult = await connection_data.query('SELECT * FROM view_tenant_v1($1)', [x1]);
        const tId = tResult.rows[0].id;

        const insertCNote = await connection_data.query('SELECT * FROM insert_connection_data_note_v1($1, $2, $3, $4, $5)', [tId, x2, connection_dataId, noteType, note]);
        const connection_dataNoteId = insertCNote.rows[0].record_id;

        checkResult = await connection_data.query('SELECT * FROM insert_connection_data_idcheck_v2($1, $2, $3, $4, $5, $6, $7, $8)', [tId, x2, connection_dataId, idX, typeOfInstertable, idOfDocument, idType, connection_dataNoteId]);

        await connection_data.query('COMMIT')
        connection_data.release();
        
        await pool.end();
        return checkResult.rows[0];        
    } catch (e) {
        await connection_data.query('ROLLBACK');
        connection_data.release();
        await pool.end();
        console.log(`Error writing ID Check: ${e}`);
        throw e;
    }
}

В 95% случаев он отрабатывает нормально, но иногда вообще не реагирует, как будто соединения с базой данных вообще не было. Я вообще не специалист в node.js, а девелопер, который это делал уже ушел. Как можно переписать корректно строку const connection_data = await pool.connect(); ... так, чтобы ловить ошибки соединения с базой данных в консоль лог?
  • Вопрос задан
  • 263 просмотра
Пригласить эксперта
Ответы на вопрос 1
megafax
@megafax
web-программист
Хм, для начала, внести в try.. catch пробовали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы