2017-06-15 7 views
0

現在、Node.js、Express、SuperAgent、KnexJS(Sqlite3のデータベースフレームワーク)でJavascriptを使用しているプロジェクトで作業しています。このエラー私はPUTメソッドを使用して、私のAPI経路を介して更新用データを送信すると、私のデータベースが正常に更新され、データベースは正常に更新されますが、APIは500エラーを返します

が、私のコンソールに戻ります:私の問題はこれです。ここ

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 + 3秒 特急:ルータのクエリ:/ユーザー/契約/ 21 + 2msの 特急:ルータexpressInit:/ユーザー/契約/ 21 +は0ms 特急:ルータjsonParser:/user/contracts/21 + 0ms express:router serveStatic:/ user/contracts/21 + 0ms express:ルータ/ユーザ/契約/ 21 + 0msからのルータトリムプレフィックス(/ユーザ) express:ルータルータ/ユーザ:/user/contracts/21 + 0ms express:ルーターディスパッチPUT/contracts/21 + 0ms' –

+0

".into( 'contracts')を削除して、あなたはすでにknex(" contracts ")で彼を提供しました – Sombriks

答えて

0

は@Sombriksで答えました。 "あなたのエラーについて、あなたは、httpステータスが私の最高の推測であるかのようにSQLステータスを送信しています。エラー500に"昇格 "されています。単にreq.send(" OK ")を試してみると、ステータス200デフォルトとして "。

関連する問題