MEAN应用程序更新功能

时间:2017-11-01 13:08:56

标签: javascript mongodb mongoose mean-stack

我正在尝试编写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"}

我需要做什么才能将新标题保存到数据库中?如果您需要帮助解决这个问题,请不要犹豫。

2 个答案:

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