2017-04-25 8 views
0

以下のM Labのmongo DBを更新しようとしましたが、運がよかったですね。サーバーを表現するためにルーティングされたハンドルバーテンプレートによるフォーム入力。エラーはなく、DBは更新されません。Mongo DBがエラーなしで更新されない

{ "_id":{ "$のOID": "58fdec20a8aac60a190152ae" }、 "名前": "アイテム1"、 "ステータス":0 }

app.put("/:id", function(req, res) { 
 

 
    db.collection.update({_id: req.body.id}, 
 
     { 
 
      $set:{status: 1}, function(){ 
 
      res.redirect("/"); 
 
      console.log('updated') 
 
      } 
 
    }); 
 

 
});
<ul> Let's Eat 
 
    {{#each ndev}} 
 
    <li> 
 
     <p> 
 
     <form action="/:{{this._id}}?_method=PUT" method="POST"> 
 
      <input type="hidden" name="id" value="{{_id}}">{{name}} 
 
      <button type="submit">Update</button> 
 
     </form> 
 
     </p> 
 
    </li> 
 
    {{/each}} 
 
</ul>

+0

使用 'findOneAndUpdate'方法、また{新しい:真}'渡す '取り戻すために更新されたドキュメント – georoot

+0

フィードバックいただきありがとうございます、あなたは正しい軌道に乗りました。 –

+0

あなたは '_id'を持っている' findAndModify'を使ってはいけません。データベースには一つの文書しか存在しません。 'findOneAndUpdate'メソッドを使う – georoot

答えて

0

以下のmongojsを使用することは私の解決策でした。

app.put("/:id", function(req, res) { 
 
    var id = req.body.id; 
 
    db.collection.findAndModify({ 
 
     query: { _id: mongojs.ObjectId(id)}, 
 
     update: { $set: {status: 1}}, 
 
     new: true}, 
 
     function(err, doc, collection){ 
 
     if(err){ 
 
      res.send(err); 
 
      }else{ 
 
     res.redirect("/"); 
 
      } 
 
      }); 
 
     });

0

ちょうどこのように$設定中括弧の外にコールバック関数を作成してください:

app.put("/:id", function(req, res) { 
    db.collection.update({_id: req.body.id},{$set:{status: 1}}, function(err,doc) 
    { 
     if(err){ 
     console.log(err); 
     } 
     res.redirect("/"); 
     console.log('updated')   
    }); 
}); 
関連する問題