2017-04-25 68 views
0

試圖更新下面的M Lab託管的mongo 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

不要使用'findAndModify'你有'_id',並且數據庫中只有一個文檔。使用'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')   
    }); 
});