2017-11-01 5 views
0

Ich versuche, eine MEAN-Anwendung Update-Funktion schreiben, aber das Update wird nicht in der MongoDB-Datenbank gespeichert. Ich versuche nur den Titel meines Dokuments zu aktualisieren. Unten ist die Funktion, die ich geschrieben habe.MEAN Anwendung Update-Funktion

router.updateJob = function (req, res) { 

    Job.findById(req.params.id, function(err, job) { 
     if (err) 
      res.send(err); 
     else { 

      var oldTitle = job.title; 
      var newTitle = req.body.title; 

      job.save(function (err) { 
       if (err) 
        res.send(err); 
       else 
        job.title = newTitle; 
        res.json({updatedTitle: job.title}); 
      }); 
     } 
    }); 
}; 

Ich sende den neuen Titel in einer JSON-Zeichenfolge mit dem Web Storm API-Testtool. Die Zeichenfolge Ich schicke Aussehen wie unten:

{"title" : "Updated Title"} 

Die Antwort, die ich von der API bin immer unten angezeigt wird, können Sie sehen, dass der Titel als aktualisierte Titel angezeigt wird. Aber wenn ich in die Datenbank gehe, wird es als der ursprüngliche Titel angezeigt, der Test ist.

{"updatedTitle":"Updated Title"} 

Was muss ich den neuen Titel zu tun haben, um in der Datenbank zu speichern? Wenn Sie weitere Informationen benötigen, um dies herauszufinden, zögern Sie nicht zu fragen.

Antwort

0

Versuchen Sie, die findByIdAndUpdate Methode zu verwenden. Also:

router.updateJob = function (req,res) { 
    Job.findByIdAndUpdate(req.params.id, req.body, {new:true}, function(err, doc) { 
    if(err) 
     return res.json(err); 
    else 
     return res.json(doc); 
    }); 
}; 
0

Es ist eigentlich job.save (Rückruf). Die Zuordnung sollte vor dem .save()

router.updateJob = function (req, res) { 

Job.findById(req.params.id, function(err, job) { 
    if (err) 
     res.send(err); 
    else { 
     var newTitle = req.body.title; 

     job.title = newTitle; 

     job.save(function (err) { 
      if (err) 
       res.send(err); 
      else 
       res.json({updatedTitle: job.title}); 
     }); 
    } 
}); 
}; 
erfolgen