2017-04-25 107 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')   
    }); 
});