Через пару недель go Я запустил приложение для блога. Для этого я использовал postgresql в качестве базы данных на бэкэнде. В то время приложение работало нормально. Я мог получать данные из внешнего интерфейса на внутренний сервер, работающий под управлением express. Сегодня я решил снова посетить проект, но столкнулся с ошибкой. После некоторой обработки ошибок и кучи поисков в StackOverflow я смог получить это сообщение:
Error: connect ECONNREFUSED 127.0.0.1:5432
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1141:16) {
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 5432
}
Сервер postgres работает на порту 5432, а НЕ в docker (здесь я найти проблему чаще всего с другими людьми).
Ниже я опубликую полный код, но проблема возникает здесь:
const { Client } = require('pg');
const client = new Client({
user: 'jonas',
host: 'localhost',
database: 'Blog_db',
password: '1518',
port: '5432',
});
client.connect().catch(err => {
console.error(err);
});
(Кстати, это правильный пароль и имя пользователя потому что я могу получить доступ к уже существующим данным через pgAdmin).
Я не понимаю, почему он не подключается.
Я пробовал:
- Перезапуск моего p c
- Перезапуск службы в службах (это машина windows)
- Переустановка postgresql (полностью)
Теперь, когда Пишу этот пост, я только что понял, что обновил свой windows до версии 2004 и wsl2. Раньше это был wsl1. Может ли это иметь какое-то отношение к этому? Я просто хотел начать новый проект, опять же с Postgres. Я думаю, что временно буду использовать mongodb и monk или mon goose, пока проблема не будет исправлена.
Добавлено 3 августа: после дополнительного чтения на stackoverflow я обнаружил, что это может быть связано с количеством экземпляров postgresql сервер запущен. Вот что я получил от диспетчера задач: Изображение диспетчера задач Это нормально, что запущено 3 экземпляра? Если нет, то как мне это исправить?
Мой полный код, если вам интересно (не обязательно):
//Express imports
const express = require('express'); //Main express lib
const morgan = require('morgan'); //Lib for loging get and post requests
const cors = require('cors'); //Only allowing the backend to talk to the frontend
const helmet = require('helmet'); //Deleting and adding html-headers to mask express
//Express app setup
const app = express();
app.use(express.json());
app.use(morgan('dev'));
app.use(helmet());
app.use(
cors({
origin: 'http://localhost:3000',
})
);
//Postgresql import
const { Client } = require('pg'); //Main postgres nodejs lib
//Other
require('dotenv').config(); //Use environement variables definded in .env file
console.log(JSON.parse(process.env.PG_CLIENT_CONNECT_INFO));
//Create a connection client to database
const client = new Client({
user: 'jonas',
host: 'localhost',
database: 'Blog_db',
password: '1518',
port: '5432',
});
client.connect().catch(err => {
console.error(err);
});
//Get the blogs from the database in JSON format
app.get('/API/getBlogs', (req, res) => {
const query = `
SELECT * FROM blogs
ORDER BY id ASC
`;
client
.query(query)
.then(response => {
res.json(response.rows);
})
.catch(err => {
console.error(err);
res.send(err);
});
});
//Add blogs to database as JSON object converted to SQL query
app.post('/API/addBlogs', (req, res) => {
const query = `
INSERT INTO blogs (author, title, content)
VALUES ('${req.body.author}', '${req.body.title}', '${req.body.content}')
`;
client
.query(query)
.then(response => {
console.log(`${response.rows} \n Successfully added requested data.`);
res.sendStatus(200);
})
.catch(err => {
console.error(err);
res.send(err);
});
});
const port = process.env.EXPRESS_PORT || 1337;
app.listen(port, () => {
console.log(`The app is now listening on http://localhost:${port}`);
});