我正在尝试编写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字符串中发送新标题。我发送的字符串如下所示:
{"title" : "Updated Title"}
我从API获得的响应如下所示,您可以看到标题显示为更新标题。但是当我进入数据库时,它显示为原始标题,即Test。
{"updatedTitle":"Updated Title"}
我需要做什么才能将新标题保存到数据库中?如果您需要帮助解决这个问题,请不要犹豫。
答案 0 :(得分: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);
});
};
答案 1 :(得分: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});
});
}
});
};