Reputation: 147
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
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
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