mjr_river
mjr_river

Reputation: 147

Mongo DB not updating, without error

Trying to update the below M Lab hosted mongo DB, not much luck, any ideas? Form input via handlebars template, routed to express server. No errors, and DB does not update.

{ "_id": { "$oid": "58fdec20a8aac60a190152ae" }, "name": "Item1", "status": 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>

Upvotes: 0

Views: 2463

Answers (2)

Atul Agrawal
Atul Agrawal

Reputation: 1520

Please make callback function out of $set braces just like this:

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')        
    });
}); 

Upvotes: 1

mjr_river
mjr_river

Reputation: 147

Using mongojs below was my solution.

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("/");
            }
            });
        });

Upvotes: 0

Related Questions