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

时间:2017-06-15 00:05:26

标签: 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:423)
    at Request.Emitter.emit (index.js:133)
    at XMLHttpRequest.xhr.onreadystatechange (client.js:735)

以下是我的API,路由和数据库代码的一些片段。

api.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 }

routes.js

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

db.js

function signContract (id, signatureUrl) {
  return knex('contracts').where('id', id)
  .update({ signature_url: signatureUrl }).into('contracts')
}

1 个答案:

答案 0 :(得分:0)

@Sombriks回答。 &#34;关于您的错误,您正在发送sql状态,就像它处于http状态一样。我最好的猜测是,它正在被推广&#34;错误500.尝试简单地req.send(&#34; OK&#34;),它将提供状态200作为默认值&#34;。