Как подключить knex. js к PostgresSQL базе данных? - PullRequest
1 голос
/ 24 февраля 2020

Привет, я пытаюсь подключить базу данных к серверу. js с Knex. js Я попытался добавить пользователя как postgresql, и я также попытался добавить хост в качестве локального хоста, но это не сработало. я всегда получаю

Ниже, когда я перечисляю все базы данных! enter image description here

Не удалось загрузить ресурс: сервер ответил со статусом 400 (неверный запрос)

Ниже приведен снимок моей ошибки, когда я пытаюсь зарегистрироваться Я!

Ниже мой регистр. js, который должен помочь с повторной регистрацией в базе данных!

enter image description here

    const handleRegister = (req, res, db, bcrypt) => {
      const { email, name, password } = req.body;
      if (!email || !name || !password) {
        return res.status(400).json('incorrect form submission');
      }
      const hash = bcrypt.hashSync(password);
        db.transaction(trx => {
          trx.insert({
            hash: hash,
            email: email
          })
          .into('login')
          .returning('email')
          .then(loginEmail => {
            return trx('users')
              .returning('*')
              .insert({
                email: loginEmail[0],
                name: name,
                joined: new Date()
              })
              .then(user => {
                res.json(user[0]);
              })
          })
          .then(trx.commit)
          .catch(trx.rollback)
        })
        .catch(err => res.status(400).json('unable to register'))
    }

module.exports = {
  handleRegister: handleRegister
};

Вот мой сервер. js файл ниже!

const express = require('express');
const bodyParser = require('body-parser');
const bcrypt = require('bcrypt-nodejs');
const cors = require('cors');
const knex = require('knex');

const register = require('./controllers/register');
const signin = require('./controllers/signin');
const profile = require('./controllers/profile');
const image = require('./controllers/image');

const db = knex({
  client: 'pg',
  connection: {
    host : 'localhost',
    user : 'postgres',
    database : 'smartbrain1'
  }
});

const app = express();

app.use(cors())
app.use(bodyParser.json());

app.get('/', (req, res)=> { res.send(db.users) })
app.post('/signin', signin.handleSignin(db, bcrypt))
app.post('/register', (req, res) => { register.handleRegister(req, res, db, bcrypt) })
app.get('/profile/:id', (req, res) => { profile.handleProfileGet(req, res, db)})
app.put('/image', (req, res) => { image.handleImage(req, res, db)})
app.post('/imageurl', (req, res) => { image.handleApiCall(req, res)})

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

А вот мои базы данных, которые я создал в postgreSQL в терминале как снимок!

enter image description here

1 Ответ

1 голос
/ 25 февраля 2020

Вы должны начать с простой попытки написать приложение для отдельного узла, которое подключается к pg и выполняет запрос. Затем вы можете начать интеграцию с другими частями вашего приложения, когда узнаете, что подключение БД работает должным образом. Теперь вопрос содержит слишком много ненужной информации.

Сначала попробуйте подключить сервер SQL из оболочки без использования сокета UNIX, но с TCP:

psql postgres://postgres@localhost/smartbrain1

Если это не удастся , это, вероятно, означает, что ваша база данных настроена так, что она не допускает никаких внешних соединений TCP.

Чтобы разрешить доступ с localhost к postgres, это следует сделать в pg_hba.conf, установив

host    all             all             127.0.0.1/32            trust

Также вам может потребоваться добавить пароль для вашего пользователя postgres и попробовать подключиться с включенным паролем:

psql postgres://postgres:<password>@localhost/smartbrain1

При подключении из командной строки вы можете попробовать что-то вроде этого в конфигурации knex:

const db = knex({
  client: 'pg',
  connection: 'postgres://postgres:<password>@localhost/smartbrain1'
});

Дополнительную информацию об отладке можно найти здесь Knex: Ошибка Pool2 - ошибка: аутентификация по паролю не удалась для пользователя и, вероятно, в десятках других универсальных c postgres подключений к базе данных проблемные вопросы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...