简体   繁体   中英

problem about connecting to my Postgres with node.js through knex

I am facing this problem with connecting to my Postgres with node.js through knex . I am trying this for the first time and I ask humbly to help me solving the issue. please help me.

My code is the following. Every time I make a request, PostgreSQL doesn't connect so nothing happens.

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

app.use(bodyParser.json());
const bcrypt = require('bcrypt-nodejs');
const cors = require('cors');
const knex = require('knex')

const db = knex({
    client: 'pg',
    connection: {
        host: '127.0.0.1',
        user: 'postgres',
        password: '',
        database: 'smart-brain'

    }
});

db.select('*').from('users').then(console.log).catch(console.log);

app.use(cors());

app.post('/signin', (req, res) => {
    if (req.body.email === database.users[0].email &&
        req.body.password === database.users[0].password) {
        res.json('success');
    } else {
        res.status(400).json('error logging in');
    }

})
app.post('/register', (req, res) => {
    const {
        name,
        email,
        password
    } = req.body;
    db('users')
        .returning('*')
        .insert({
            email: email,
            name: name,
            joined: new Date()
        })
        .then(respons => {
            res.json(response);
        }).
    catch(err => res.status(400).json('unable to register'))
})

app.listen(3000, () => {
    console.log('app is running on the port 3000');
});

and the response is these on npm

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
}

If you are in Ubuntu, then go to the following folder.

/etc/postgresql/{your_pg_version}/main

Or If you are in Windows, then go to the following folder,

C:\Program Files\PostgreSQL\{your_pg_version}\data\

Open the file pg_hba.conf to write with SuperUser/Administrative permission,

Go to the bottom, and put trust at the end of following lines.

# Database administrative login by Unix domain socket
local   all             postgres                                trust

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust

After that, restart your PostgreSQL server and try again with your code.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM