Express response.redirect上的“整数的无效输入语法”错误

时间:2019-05-29 01:12:56

标签: javascript node.js express

通过Express对Postgres运行PUT查询时,出现以下错误。

错误:整数的无效输入语法:“所有调用”

似乎是在提到router.put函数中的这段代码 response.redirect('all-calls')。数据正在数据库中更新。

这是我创建的第一个POST请求。所有其他重定向都为POST,并且response.redirect('all-calls')在它们上的运行情况都很好。

有问题的PUT路线:

router.put('/update-call-simple/:id', (request, response, next) => {
  console.log(request.body)
  const { id } = request.params;
  const { organisation_id, caller_name, call_contents, support_agent, priority, category, id_vendor } = request.body;
  pool.query('UPDATE calls SET id_organisation=($1), caller_name=($2), call_contents=($3), support_agent=($4), priority=($5), category=($6), id_vendor=($7) WHERE calls_id=($8)',
    [organisation_id, caller_name, call_contents, support_agent, priority, category, id_vendor, id],
    (err, res) => {
      if (err) return next(err);
      response.redirect('all-calls');
    })
})

完美运行的PUT路线示例:

router.post('/new-call-simple', (request, response, next) => {
  const { organisation_id, caller_name, call_contents, support_agent, priority, category, id_vendor } = request.body;
  pool.query('INSERT INTO calls (id_organisation, caller_name, call_contents, support_agent, priority, category, id_vendor, date_time) VALUES ($1, $2, $3, $4, $5, $6, $7, $8)',
    [organisation_id, caller_name, call_contents, support_agent, priority, category, id_vendor, Date.now()],
    (err, res) => {
      if (err) return next(err);
      response.redirect('all-calls');
    }
  )
})

1 个答案:

答案 0 :(得分:1)

您正在使用相对路径,而express无法解析相对于all-calls的{​​{1}}路径。除非您有路由/update-call-simple/:id,否则重定向将无法进行。假设这是/update-call-simple/:id/all-calls输入,那么express是可能

使用status-code来创建相对于root的路径。

例如,您有一条路线:

/

并在其他地方的代码中重定向到此页面:

router.put('/path/to/somewhere' ...