2016-12-12 17 views
0

私の明示的なアプリケーションの中で更新を実装する際に問題があります。 http://localhost:3000/update2?buyerID=2299 上記のリンクを入力すると、フォームになりますが空白になります。 このフォームには、購入者IDのドキュメントに関連する現在の値が入力されます。ノードJS Express更新の問題

誰かが間違っているのを見ることができますか?

JSONファイル

http://prntscr.com/dil1fj

JSが

router.get('/update2', function(req, res) { 
    var buyerID = req.query.buyerID; 

    if (!buyerID || !parseInt(buyerID)) { 
     res.render('error', {message: "You need to enter an ID to update a specific order", error:{status:"", stack: ""}}); 
    } else { 

     mongoClient.connect(url, function (err, db) { 
      if (err) { 
       res.render('error', {message: "Failed to connect to MongoDB",error:{status:"", stack: ""}}); 
      } else { 
       var WishList = db.collection('orders'); 
       WishList.findOne({"buyerID": parseInt(buyerID)}, function(err, result) { 
        if (err || !result || result.length == 0) { 
         res.render('error', {message: "Failed to find order",error:{status:"", stack: ""}}); 
        } else { 
         res.render('updateOrder2', {updateOrder2: result, qs: req.query}); 
        } 
       }) 
      } 
     }); 
    } 
}); 

router.post('/update2', function(req, res) { 
    var buyerID = req.query.buyerID; 

    if (!buyerID || !parseInt(buyerID)) { 
     res.render('error', {message: "Failed to update order make sure the ID is current", error:{status:"", stack: ""}}); 
    } else { 

     mongoClient.connect(url, function (err, db) { 
      if (err) { 
       res.render('error', {message: "Failed to connect to MongoDB", error:{status:"", stack: ""}}); 
      } else { 
       var WishList = db.collection('orders'); 

       var order = { 
        buyerID: req.body.buyerID, 
        gender: req.body.gender, 
        student: req.body.student, 
        pName: req.body.pName, 
        type: req.body.type, 
        purchaseDate: req.body.purchaseDate, 
        price: req.body.price, 
        sName: req.body.sName 

       }; 
       console.log("Updating..", order) 
       WishList.updateOne({"buyerID": parseInt(buyerID)}, {$set: order}, function (err, result){ 
        if (err) { 
         console.log("Cannot update", err) 
        } else { 
         console.log("Updated..", order) 
         res.redirect("/orders") 
        } 
       }) 

      } 
     }); 
    } 
}); 

updateOrder2.ejs

ファイル

感謝

<!DOCTYPE html> 
<html> 
<head> 
    <title>Update Recipe</title> 
    <link rel='stylesheet' href='/stylesheets/style.css' /> 
</head> 
<body> 

<form name= "updateOrder" action="/updateOrder" method="POST"> 
    User ID:<br> 
    <input type="text" name="buyerID" value = <%=qs.buyerID%>/ required ="required"><br> 
    Gender:<br> 
    <input type="text" name="gender" value = <%=qs.gender%>/ required ="required"><br> 
    Student?:<br> 
    <input type="text" name="student" value = <%=qs.student%>/ required ="required"><br> 
    Product ID:<br> 
    <input type="text" name="productID" value = <%=qs.productID%>/ required ="required"><br> 
    Product Name:<br> 
    <input type="text" name="pName" value = <%=qs.pName%>/ required ="required"><br> 
    Product Type:<br> 
    <input type="text" name="type" value = <%=qs.type%>/ required ="required"><br> 
    Date Purchased:<br> 
    <input type="text" name="purchaseDate" value = <%=qs.purchaseDate%>/ required ="required"><br> 
    Product Price:<br> 
    <input type="text" name="price" value = <%=qs.price%>/ required ="required"><br> 
    Seller Name:<br> 
    <input type="text" name="sName" value = <%=qs.sName%>/ required ="required"><br> 
    <br><br> 



    <input type="submit" value="Submit" /> 
</form> 


</body> 
</html> 
+0

ブラウザで空のフォームのソースコードを見たときに何が表示されますか?ノードコンソールでエラーが発生していますか? –

+0

私はエラーが発生していないので、フィールドにそのバイヤーIDに関連するデータが入力されているようにしてください –

+0

私はejを使ったことは一度もありませんでしたが、少なくともあなたはa)スペースを引用符で囲み、b)スラッシュを削除します。また、ソースコードとしてはどういうものがありますか?それは "value ="を含んでいますか?もしそうなら、その後に何が挿入されますか?また、 'qs:req.query'をレンダラーに渡しています。 'qs:result'を渡すべきではありませんか? –

答えて

0

私は一度もejを使ったことはありませんでしたが、私はあなたが少なくとも引用符でスペースを含む値を入れてb)スラッシュを削除する必要があると確信しています。また、ソースコードとしてはどういうものがありますか?それは "value ="を含んでいますか?もしそうなら、その後に何が挿入されますか?また、qs: req.queryをレンダラーに渡しています。 qs: resultを渡すべきではありませんか?

アップデートに関しては、var buyerID = req.query.buyerID;router.post('/update2'の先頭にあると推測しています。 req.body.buyerIDを使用する必要があります。私はコードに多くのconsole.log()コマンドを追加することをお勧めします。

+0

に渡されたフィールドでドキュメントを更新しているようですが、最新の問題を見てください。 –

0

私はこれを推測しています。buyerID = req.query.buyerID; router.post( '/ update2'の開始時に問題があるので、req.body.buyerIDを使用する必要があります)あなたのコードに多くのconsole.log()コマンドを追加することをお勧めします。

関連する問題