sql >> Base de Datos >  >> NoSQL >> MongoDB

Problemas con la solicitud PUT usando Node.js (express), Angular y MongoDB

El fragmento de código para actualizar los hábitos existentes debería funcionar bien con algunas pequeñas correcciones

  1. Cuando se ejecuta en un error siempre use return
  2. Siempre devuelve un estado. En este caso enviaremos 500
  3. Verifique que no se encuentre y devuelva 404
  4. Utilice un objeto de actualización simple. Esto solo actualizará los campos contenidos en el objeto de actualización
  5. El documento mongodb devuelto por el monje no tiene función de guardado, el documento debe actualizarse a través de la colección
  6. Compruebe si la solicitud tiene un cuerpo y envíe 400 - Solicitud incorrecta

Puede pasar una identificación de objeto como hexadecimal u ObjectId a findById como se indica en los documentos de Monk .

router.put('/api/habits/:habit_id', function(req, rest){
    var db = req.db;
    var collection = db.get('habits');

    if(!req.body) { return res.send(400); } // 6

    collection.findById(req.params.habit_id, function(e,data){  
        if(e) { return res.send(500, e); } // 1, 2

        if(!data) { return res.send(404); } // 3

        var update = { title : req.body.title, count : req.body.count }; // 4

        collection.updateById(req.params.habit_id, update, function(err) { // 5
            if(err) {
                return res.send(500, err);
            }

            res.json(data);
        });
    });
});

El código anterior se puede simplificar aún más usando findAndModify función de monje.