Не удается получить JavaScript для подключения к PostgresSql - PullRequest
1 голос
/ 27 апреля 2019

Я сделал небольшую демонстрационную программу, чтобы узнать о веб-разработке.Поэтому я просто хочу получить обратную связь от моей базы данных на сервере localhost.Но по какой-то причине я не могу получить соединение

Я пытался следовать этому руководству: https://blog.logrocket.com/setting-up-a-restful-api-with-node-js-and-postgresql-d96d6fc892d8

Это мои запросы.js:

const Pool = require('pg').Pool;
const pool = new Pool({
    user: 'barl',
    host: 'localhost',
    database: 'students',
    password: '123456',
    port: 5432,
});

const getUserById = (request, response) => {
    const id = parseInt(request.params.id);

    pool.query('SELECT * FROM students WHERE student_id = $1', [id], (error, results) => {
        if (error) {
            throw error;
        }
        response.status(200).json(results.rows);
    })
};

module.exports = {
    getUserById
};

Этомой server.js:

//Getting the express module
const express = require('express');
//Creating an App var that run the express method
const app = express();

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

const db = require('./queries');

app.use(bodyParser.json());
app.use(
    bodyParser.urlencoded({
        extended: true,
    })
);

app.get('/students', function(req, res){
    db.getUserById;
});


//Setting the server to run on port blah blah
const server = app.listen(7000, () => {
    console.log(`Express running → PORT ${server.address().port}`);
});

И, package.json:

{
  "name": "untitled3",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "npx pm2 start server.js --watch"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "ejs": "^2.6.1",
    "express": "^4.16.4",
    "pg": "^7.10.0",
    "pm2": "^3.5.0",
    "body-parser": "latest"
  }
}

Моя БД postgres работает и отлично работает на моей машине, и я вижу информацию.

Но когда я помещаю это в браузер:

http://localhost:7000/students/1

я получаю:

Cannot GET /students/1

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 27 апреля 2019

Это потому, что вы не определили маршрут, к которому вы пытаетесь получить доступ из браузера:

Вы пытаетесь получить доступ к students/someid, который не существует.Также вам нужно передать объект request и response

. Вы можете определить его как:

app.get('/students/:id', function(req, res){
  db.getUserById(req, res);
});

:id - это named parameter, к которому вы можете получить доступ через req.params

Ваш маршрут не выполняет никакой работы, кроме вызова экспортированной функции БД, он может просто смонтировать ее как:

app.get('/students/:id', db.getUserById)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...