Javascript 数据库更新成功,但API返回500错误

Javascript 数据库更新成功,但API返回500错误,javascript,express,sqlite,knex.js,superagent,Javascript,Express,Sqlite,Knex.js,Superagent,我目前正在从事一个项目,该项目将Javascript与Node.js、Express、SuperAgent和KnexJS(Sqlite3数据库框架)结合使用。我的问题是: 当我使用PUT方法通过API路由提交更新数据时,我的数据库更新成功,但我的控制台返回此错误: PUT http://localhost:3000/user/contracts/ 500 (unknown) Error: unknown at Request.<anonymous> (client.js:42

我目前正在从事一个项目,该项目将Javascript与Node.js、Express、SuperAgent和KnexJS(Sqlite3数据库框架)结合使用。我的问题是:

当我使用PUT方法通过API路由提交更新数据时,我的数据库更新成功,但我的控制台返回此错误:

PUT http://localhost:3000/user/contracts/ 500 (unknown)
Error: unknown
    at Request.<anonymous> (client.js:423)
    at Request.Emitter.emit (index.js:133)
    at XMLHttpRequest.xhr.onreadystatechange (client.js:735)
routes.js

const request = require('superagent')

const updateUserContract = (callback, id, contractData) => {
  request
    .put('http://localhost:3000/user/contracts/' + id)
    .set('Content-Type', 'application/json')
    .send(contractData)
    .end(function (err, res) {
      if (err) {
        callback(err)
      } else {
        callback(null, "Status: 200")
      }
    })
}

module.exports = { updateUserContract }
router.put('/contracts/:id', function (req, res) {
  var id = req.params.id
  var signatureUrl = req.body.signature_url
  db.signContract(id, signatureUrl).then((result) => {
    res.sendStatus(result)
  })
  .catch((err) => {
    res.status(500).send(err)
  })
})
function signContract (id, signatureUrl) {
  return knex('contracts').where('id', id)
  .update({ signature_url: signatureUrl }).into('contracts')
}
db.js

const request = require('superagent')

const updateUserContract = (callback, id, contractData) => {
  request
    .put('http://localhost:3000/user/contracts/' + id)
    .set('Content-Type', 'application/json')
    .send(contractData)
    .end(function (err, res) {
      if (err) {
        callback(err)
      } else {
        callback(null, "Status: 200")
      }
    })
}

module.exports = { updateUserContract }
router.put('/contracts/:id', function (req, res) {
  var id = req.params.id
  var signatureUrl = req.body.signature_url
  db.signContract(id, signatureUrl).then((result) => {
    res.sendStatus(result)
  })
  .catch((err) => {
    res.status(500).send(err)
  })
})
function signContract (id, signatureUrl) {
  return knex('contracts').where('id', id)
  .update({ signature_url: signatureUrl }).into('contracts')
}

回答是@Sombriks。“关于您的错误,您发送sql状态就像发送http状态一样。我最好的猜测是,它被“升级”为错误500。请尝试简单地请求发送(“确定”),它将默认发送状态200”。

检查您的服务器日志以了解错误500的原因。@Barmar我刚刚检查了一下。很抱歉,在某种程度上,这还是个新鲜事。我没有发现任何错误。这就是我得到的
express:router dispatching PUT/user/contracts/21+3s express:router query:/user/contracts/21+2ms express:router expressInit:/user/contracts/21+0ms express:router jsonParser:/user/contracts/21+0ms express:router serveStatic:/user/contracts/21+0ms express:router trim prefix(/user)从url/user/contracts/21+0ms express:router router/user:/user/contracts/21+0ms express:router dispatching PUT/contracts/21+0ms
剥离“.into”(“contracts”)”,您已经在knex(“contracts”)中向他提供了有关错误的信息,您正在发送sql状态,就像发送http状态一样。我最好的猜测是,它被“提升”到错误500。尝试简单地请求发送(“确定”),它将作为默认状态发送状态200。@Sombriks你是一个传奇人物!这就成功了!干杯