2016-05-03 8 views
0

私の削除コードは機能しません。私は私のconsole.logが表示されないので発砲もしないと思います。私はフォームで動作する追加ボタンを持っています。それは私がそれを得ない理由です。Jade + mongodb + express.js、フォームが機能しない

app.js:

var db = monk('localhost:27017/mongodb'); 

ジェイド:

extends admin_menu 

block content 
    h1. 
     Cocktail list 
    ul 
     each cocktail, i in cocktaillist 
      li 
       p= cocktail.name 
      form#form_delete_project(name="/admin/delete_cocktail", method="post", action="/admin/delete_cocktail") 
      input#input_name(type="hidden", placeholder="", name="_id", value="#{cocktail._id}") 
      button#submit_project(type="submit") delete 

index.js:

router.post('/admin/delete_cocktail', function(req, res) { 
    console.log(id) 
    // Set our internal DB variable 
    var db = req.db; 

    // Get our form values. These rely on the "name" attributes 
    var id = req.body._id; 

    // Set our collection 
    var collection = db.get('cocktailcollection'); 

    // Submit to the DB 
    collection.remove({ 
     "_id":id 

    }, function (err, doc) { 
     if (err) { 
      // If it failed, return error 
      res.send("There was a problem removing the information to the database."); 
     } 
     else { 
      // And forward to success page 
      res.redirect("/admin/cocktail_list"); 
     } 
    }); 
}); 
+0

あなたは 'body-parser'ミドルウェアを使用していますか? ノードサーバーを起動した端末で、POST要求が表示されますか? – Komo

+0

はい私はボディパーサーを使用していますが、ノードサーバーで何も表示されません。 – Sunkhern

答えて

1

ジェイドは、インデント上に構築されています。あなたのフォームに項目をインデントしていないので、フォームにはありません。 _idとあなたの入力は、それが掲載されていないフォームの外にあるので

<form> 
</form> 
<input name="_id"> 
<button> 

:HTML内のコードは次のようになります。そのため、コンソールログには何も表示されません。 req.body._id.はありませんもちろん、送信ボタンもフォーム外にあります。それで何もしません。

まず、コードをインデントする必要があります。

+0

ありがとう、インデントシステムを忘れてしまいました。だから私はイベントを発射するが、それは – Sunkhern

+0

私は自己訂正を送ったIDをキャッチしていない とidを持っていたvar id = req.body._id – Sunkhern

関連する問題