2017-11-01 9 views
0

MEANアプリケーションアップデート関数を作成しようとしていますが、アップデートは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}); 
      }); 
     } 
    }); 
}; 

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