Intentando actualizar la base de datos mongo alojada por M Lab a continuación, no tuve mucha suerte, ¿alguna idea? Entrada de formulario a través de la plantilla del manillar, enrutada al servidor express. No hay errores y la base de datos no se actualiza.
{ "_id": { "$oid": "58fdec20a8aac60a190152ae" }, "nombre": "Artículo1", "estado": 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>Realice la función de devolución de llamada con $set llaves como esta:
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') }); });Usar mongojs a continuación fue mi solución.
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("/"); } }); });