为什么Express.js可变路由不起作用?

时间:2019-04-23 04:13:45

标签: mysql node.js express

所以我有代码,该代码基于路由调用mySQL,但是它不起作用...

Cat

结果不确定。...

3 个答案:

答案 0 :(得分:0)

对于整个比较表达式,请不要使用占位符。并且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放在模板文字中。您应该将数值传递给查询。

答案 1 :(得分:0)

尚不清楚您在使用哪个MySQL软件包,但在我看来,您的SQL格式不正确。

我希望您的查询看起来像这样:

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

这将导致一个如下所示的SQL查询:

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

在查询中,您没有WHERE表达式,只是一个表达式应位于的占位符。我对那里的每个 MySQL软件包并不熟悉,但是我所知道的每个软件包都将要求您阐明要匹配的条件。

答案 2 :(得分:0)

我修复了它。交换WHERE和ORDER BY就可以了!

 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);
    });