Не могу подключиться к postgresql в react приложении с помощью пакета 'pg' (node-postgres)

105
05 марта 2021, 18:10

Задача: подключить БД Postgresql 11 к проекту на React для получения оттуда данных. Не могу найти документацию, соответствующую реальности или примеры готового кода использования пакета 'pg'.

Создал новый React проект:

create-react-app PGTestProject

Далее пытался подключиться к БД. Действий, указанных в разделе "Getting started" недостаточно для начала работы с пакетом. Например там не указано, как поменять параметры подключения к БД. Без этого невозможно и подключиться к созданной базе данных.

Действий, указанные в разделе "Connecting" тоже недостаточно. Возникает ошибка "net.Socket is not a constructor"

App.js:

import React from 'react';
import logo from './logo.svg';
import './App.css';
async function getDatafromDB(){
    const { Pool, Client } = require('pg')
    const pool = new Pool({
        user: 'postgres',
        host: 'ip_сервера',
        database: 'mydb',
        password: 'пароль',
        port: 5432,
    })
    pool.query('SELECT NOW()', (err, res) => {
        console.log(err, res)
        pool.end()
    })
    const pool = new Pool({
        user: 'postgres',
        host: 'ip_сервера',
        database: 'mydb',
        password: 'пароль',
        port: 5432,
    })
    client.connect()
    client.query('SELECT NOW()', (err, res) => {
        console.log(err, res)
        client.end()
    })
}
function App() {
    getDatafromDB();
    return (
        <div className="App">
            <header className="App-header">
                <img src={logo} className="App-logo" alt="logo"/>
                <p>
                    Edit <code>src/App.js</code> and save to reload.
                </p>
                <a
                    className="App-link"
                    href="https://reactjs.org"
                    target="_blank"
                    rel="noopener noreferrer"
                >
                    Learn React
                </a>
            </header>
        </div>
    );
}
export default App;

Хотелось бы увидеть примеры рабочего кода с взаимодействием javascript-кода и postgresql. Всё что находил не работает.

В консоли браузера возникает ошибка: TypeError: net.Socket is not a constructor

Answer 1

Немного не корректная затея у вас.. Коннект к базе данных с браузера? Для реализации работы с базой данных, вам необходимо поднять бекенд сервер (на том же NodeJS), с которого вы будете коннектиться к базе данных, а реакт будет запрашивать данные у сервера. Данная библиотека для подключения к базе - это модуль NodeJS, хоть он и доступен для установки в реакт приложении - с вероятностью 90% он не будет работать в браузере, так как браузер попросу запретит подключение.

READ ALSO
Пакеты NPM и VK

Пакеты NPM и VK

Как установить пакет ни по инструкциям в документации VK, ни по инструкциям документации NPM и ни по инструкциям интернета так и не удалосьА...

301
Maximum call stack size exceeded

Maximum call stack size exceeded

При выполнении кода вылетает данная ошибка, не понимаю почему

93
Убрать пробелы и добавить тире после слова

Убрать пробелы и добавить тире после слова

Как с помощью регулярки сделать из этого CA - Los Angeles вот это CA-Los-Angeles?

137