MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Problème avec la requête PUT utilisant Node.js (express), Angular et MongoDB

Le fragment de code pour mettre à jour les habitudes existantes devrait fonctionner correctement avec quelques petites corrections

  1. Lors de l'exécution d'une erreur, utilisez toujours return
  2. Toujours renvoyer un statut. Dans ce cas, nous enverrons 500
  3. Vérifier introuvable et renvoyer 404
  4. Utilisez un objet de mise à jour simple. Cela ne mettra à jour que les champs contenus dans l'objet de mise à jour
  5. Le document mongodb renvoyé par monk n'a pas de fonction de sauvegarde, le document doit être mis à jour via la collection
  6. Vérifiez si la requête a un corps et envoyez 400 - Bad Request

Vous pouvez passer un identifiant d'objet en tant qu'hexadécimal ou ObjectId à findById comme indiqué dans la documentation 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);
        });
    });
});

Le code ci-dessus peut être encore simplifié en utilisant le findAndModify fonction de Moine.