2017-06-15 113 views
0

我目前正在使用Javascript與Node.js,Express,SuperAgent和KnexJS(Sqlite3的數據庫框架)的項目。我的問題是這樣的:數據庫更新成功,但API返回500錯誤

當我提交的數據使用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,路由和DB代碼。

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') 
} 
+0

檢查您的服務器日誌,找出500錯誤的原因。 – Barmar

+0

@Barmar我剛接受檢查。對不起,還有一個新的學位。我沒有看到有關錯誤的任何信息。這是我回來的。 '表示:路由器調度PUT /用戶/合同/ 21 + 3S 快遞:路由器查詢:/用戶/合同/ 21 + 2ms的 快遞:路由器expressInit:/用戶/合同/ 21 + 0毫秒 快遞:路由器jsonParser:/user/contracts/21 + 0ms express:router serveStatic:/ user/contracts/21 + 0ms express:router路由器/用戶:/user/contracts/21 + 0ms express:router dispatch PUT/contracts/21 + 0ms' –

+0

剝離「.into('contracts')」,您已經在knex(「contracts」) – Sombriks

回答

0

被@Sombriks回答。 「關於你的錯誤,你正在發送sql狀態,就好像它處於http狀態的位置,我最好的猜測是,它被」提升「爲錯誤500.嘗試簡單地req.send(」OK「),它會傳遞狀態200作爲默認「。

相關問題