2017-11-01 4 views
0

평균 응용 프로그램 업데이트 함수를 작성하려고하지만 업데이트가 MongoDB 데이터베이스에 저장되지 않습니다. 내 문서의 제목 만 업데이트하려고합니다. 아래는 내가 작성한 기능입니다.평균 응용 프로그램 업데이트 함수

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

웹 스톰 API 테스트 도구를 사용하여 JSON 문자열에 새 제목을 보냅니다. 문자열은 나는 아래와 같은 외모를 보낸다 : 나는 API에서 얻고 응답은 다음과 같습니다

{"title" : "Updated Title"} 

, 당신은 제목이 업데이트 제목으로 게재되고 있음을 볼 수 있습니다. 그러나 데이터베이스에 들어가면 테스트라는 원래 제목으로 표시됩니다.

{"updatedTitle":"Updated Title"} 

새 제목을 데이터베이스에 저장하려면 어떻게해야합니까? 이 정보를 알아내는 데 도움이되는 다른 정보가 있으면 언제든지 물어보십시오.

답변

0

findByIdAndUpdate 메서드를 사용해보십시오. 따라서 :

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

사실 job.save (콜백)입니다. 할당은 .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}); 
     }); 
    } 
}); 
};