Почему не работает переменный маршрут Express.js? - PullRequest
0 голосов
/ 23 апреля 2019

Итак, у меня есть код, который вызывает mySQL на основе маршрута, однако он не работает ...

app.get("/attitude-chart/:att", function(req, res) {


    connection.query("SELECT * FROM actors ORDER BY id WHERE ?",{'attitude':`${req.params.att}`}, function(err, result) {

      var html = "<h1>Attitude-chart</h1>";

      html += "<ul>";

      for (var i = 0; i < result.length; i++) {
        html += "<li><p> ID: " + result[i].id + "</p>";
        html += "<p>Name: " + result[i].name + " </p></li>";
      }
      html += "</ul>";
      res.send(html);
    });

});

результаты не определены ....

Ответы [ 3 ]

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

Не ясно, какой пакет вы используете для MySQL, но мне кажется, что ваш SQL не правильно сформирован.

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

connection.query('SELECT * FROM actors WHERE attitude=?', req.params.att, ...)

Это приведет к тому, что SQL-запрос будет выглядеть следующим образом:

SELECT * FROM actores WHERE attitude='your value';

В вашем запросе нет выражения WHERE, только заполнитель, где должно быть выражение.Я не знаком с каждым пакетом MySQL, но каждый, о котором я знаю, потребует, чтобы вы разъяснили, к какому условию вы пытаетесь соответствовать.

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

Я исправил это. Обмен ГДЕ и ЗАКАЗАТЬ сделали свое дело!

 connection.query("SELECT * FROM actors WHERE ? ORDER BY id",[{'attitude':`${x}`}], function(err, result) {
      console.log(result);
      var html = "<h1>Attitude-chart</h1>";

      html += "<ul>";

      for (var i = 0; i < result.length; i++) {
        html += "<li><p> ID: " + result[i].id + "</p>";
        html += "<p>Name: " + result[i].name + " </p></li>";
      }
      html += "</ul>";
      res.send(html);
    });
0 голосов
/ 23 апреля 2019

Вы не используете заполнитель для всего выражения сравнения.И предложение ORDER BY должно быть после предложения WHERE.

Вам нужно написать:

connection.query("SELECT * FROM actors WHERE attitude = :attitude ORDER BY id ",{'attitude': `${req.params.att}`}, function(err, result) {

Заполнитель :attitude заменяется значением attitude свойство объекта.

И если столбец числовой, вы не должны помещать req.params.att в литерал шаблона.Вы должны передать числовое значение в запрос.

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