MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Problemas com a solicitação PUT usando Node.js (expresso), Angular e MongoDB


O fragmento de código para atualizar os hábitos existentes deve funcionar bem com algumas pequenas correções
  1. Ao executar em um erro sempre use return
  2. Sempre envie um status de volta. Nesse caso, enviaremos 500
  3. Verifique se não foi encontrado e retorne 404
  4. Use um objeto de atualização simples. Isso atualizará apenas os campos contidos no objeto de atualização
  5. O documento mongodb retornado por monk não tem função de salvar, o documento precisa ser atualizado por meio da coleção
  6. Verifique se a solicitação tem corpo e envie 400 - Solicitação inválida

Você pode passar um ID de objeto como hexadecimal ou ObjectId para findById conforme declarado nos documentos do 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);
        });
    });
});

O código acima pode ser simplificado ainda mais usando o findAndModify função de monge.