MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Problemi con la richiesta PUT utilizzando Node.js (express), Angular e MongoDB

Il frammento di codice per aggiornare le abitudini esistenti dovrebbe funzionare correttamente con alcune piccole correzioni

  1. Quando si esegue un errore, utilizzare sempre return
  2. Invia sempre uno stato indietro. In questo caso invieremo 500
  3. Cerca non trovato e restituisci 404
  4. Usa un semplice oggetto di aggiornamento. Questo aggiornerà solo i campi contenuti nell'oggetto di aggiornamento
  5. Il documento mongodb restituito dal monaco non ha funzione di salvataggio, il documento deve essere aggiornato tramite la raccolta
  6. Verifica se la richiesta ha un corpo e invia 400 - Richiesta non valida

Puoi passare un ID oggetto come esadecimale o ObjectId a findById come affermato nei documenti del Monaco .

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

Il codice sopra può essere ulteriormente semplificato utilizzando findAndModify funzione del Monaco.