Express / Node.js Страница Обновить Проблема - PullRequest
0 голосов
/ 13 декабря 2018

Я новичок во всем, что связано с веб-разработкой на серверах (в университете прошел только один курс).У меня странная проблема, связанная с GET-запросом, когда, если я обновляюсь слишком много раз, он просто перестает отправляться.Вот вывод из npm start, когда он работает:

GET / 304 0.350 ms - -
GET /stylesheets/styles.css 404 28.359 ms - 1132
GET /javascripts/scripts.js 304 0.244 ms - -
GET /favicon.ico 404 11.692 ms - 1132
GET /skaterSummary.json 304 51.770 ms - -

После многократного обновления спама вывод выглядит так:

GET /skaterSummary.json - - ms - -
GET / 304 0.676 ms - -
GET /stylesheets/styles.css 404 28.628 ms - 1132
GET /javascripts/scripts.js 304 0.599 ms - -
GET /favicon.ico 404 20.098 ms - 1132

Код: маршруты / индекс.js

// Database Testing
router.get('/skaterSummary.json', function(req, res, next) {
    req.pool.getConnection(function(err, connection) {
        if (err) throw err;
        var query = "SELECT * from Summary;";
        connection.query(query, function(err, results) {
            res.json(results); // send response
        });
    });
});

Код: scripts.js

$(document).ready(function() {
    'use strict';

    let xhttp = new XMLHttpRequest();

    xhttp.open('GET', 'skaterSummary.json', true);
    xhttp.setRequestHeader('Content-type', 'application/json');
    xhttp.send();

    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            console.log("Success");
            console.log(JSON.parse(xhttp.responseText));
        }
    };
});

Спасибо за любые ссылки:)

1 Ответ

0 голосов
/ 13 декабря 2018

Таким образом, проблема, скорее всего, заключается в том, что ошибка возникает из-за любого запроса БД, если ошибка (особенно при асинхронном обратном вызове) ничего не сделает, она не будет распространена, поэтому не может быть обработана, что означает любое ожиданиезапросы будут просто зависать до истечения времени ожидания.

Лучший способ справиться с этим - вызвать next и передать ошибку в Express, затем вы можете добавить свой собственный обработчик ошибок или использовать стандартный по умолчанию из Express

router.get('/skaterSummary.json', function(req, res, next) {
  req.pool.getConnection(function(err, connection) {
    if (err) {
      console.error(err); // log the DB error internally
      return next(new Error('Server Error')); // return a client error
    }

    var query = "SELECT * from Summary;";
    connection.query(query, function(err, results) {
      if (err) { 
        console.error(err);
        return next(new Error('Server Error')); 
      }

      res.json(results); // send response
    });
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...