node.js - Nodejs 整数错误输入语法无效

标签 node.js postgresql express

我使用 postgres sql、nodejs、express

     app.get("/topic/create", function(req, res) {
      var sql = "SELECT id, title FROM topic";
      client.query(sql, function(err, res2) {
        console.log(res2.rows);
        //res.render("create", { topics: res2.rows });
      });
    });

这个代码是我的路由器代码 但是当我输入该网址时出现错误

   error: invalid input syntax for integer: "create"
  name: 'error',
  length: 110,
  severity: 'ERROR',
  code: '22P02',  line: '62',routine: 'pg_atoi'  

我不知道原因,因为 sql 正在处理其他 url,只是 app.get 代码不起作用

    //라우팅 작업
    app.get("/", function(req, res) {
      res.redirect("/topic");
    });
    app.get("/topic", function(req, res) {
      var sql = "SELECT id, title FROM topic";
      client.query(sql, function(err, res2) {
        if (err) {
          console.log(err);
        } else {
          res.render("view", { topics: res2.rows });
        }
      });
    });
app.get("/topic/:id", function(req, res) {
  var id = req.params.id;
  var sql1 = "SELECT id, title FROM topic";
  var sql2 = "SELECT * FROM topic where id=$1";
  client.query(sql2, [id], function(err, res2) {
    if (err) {
      console.log(err);
    } else {
      client.query(sql1, function(err, res3) {
        if (err) {
          console.log(err);
          res.status(500).send("Internal Server Error");
        } else {
          var list = [];
          var result = res3.rows;
          for (var i = 0; i < result.length; i++) {
            list.push(res3.rows[i]);
          }
          res.render("view", { details: res2.rows, topics: list });
        }
      });
    }
  });
});

这是我的路由器代码,它是相同的。这段代码运行良好

我不知道为什么只有那个网址出错

最佳答案

app.get("/topic/create", function(req, res) {
      var sql = "SELECT id, title FROM topic";
      client.query(sql, function(err, res2) {
        console.log(res2.rows);
        //res.render("create", { topics: res2.rows });
      });
    });

您必须将此路由器放在第一个路由器的下面,

app.get("/topic/:id", function(req, res) {
  var id = req.params.id;
  var sql1 = "SELECT id, title FROM topic";
  var sql2 = "SELECT * FROM topic where id=$1";
  client.query(sql2, [id], function(err, res2) {
    if (err) {
      console.log(err);
    } else {
      client.query(sql1, function(err, res3) {
        if (err) {
          console.log(err);
          res.status(500).send("Internal Server Error");
        } else {
          var list = [];
          var result = res3.rows;
          for (var i = 0; i < result.length; i++) {
            list.push(res3.rows[i]);
          }
          res.render("view", { details: res2.rows, topics: list });
        }
      });
    }
  });
});

这会起作用,因为快速获取并与第一个匹配。它失败了,这就是你收到此错误的原因。

关于node.js - Nodejs 整数错误输入语法无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59676081/

相关文章:

javascript - 使用 Node 作为服务器的 O365 邮件 API

c - 分别使用nodejs和c做AES-128-cbc加密时,使用相同的key和IV但结果不同

postgresql - 使用 dblink 更新列

node.js - 用户如何使用 sequelize postgres nodejs 互相喜欢发帖?

node.js - Passport w/node.js 谷歌错误

javascript - 如何将 API 响应作为 JSON 对象发送给客户端?

mysql 查询返回两个单独的数组

Django 管理数据错误 : Value too long for type character varying(150)

javascript - 如何使用 Node.js 创建自引用 MongoDB 模式并发布路由?

node.js - Electron : Net from Nodejs doesn't trigger events on Windows build