findOneAndUpdate

时间:2016-05-21 14:18:12

标签: javascript node.js mongodb express mongoose

我发布到/更新路线。

这样可行,因为我可以在终端中看到我的console.log()项目打印,请参见此处:

enter image description here

但是,我的代码似乎完全忽略了find和更新函数。

我想要做的就是对路线运行一个put请求并让它更新帖子。

这是我的AJAX请求:

$.ajax({
    url: "/admin-panel/update/",
    method: "PUT",
    data: $data,
    success: function(data, status) {
        alert("Data: " + data + "\nStatus: " + status);
        window.location.href = "/admin-panel/update/";
    },
    error: function(err) {
        if (err) throw err;
    }
});

这是后端的put请求处理程序:

router.put("/:action", function(req, res, next) {
    if (req.params.action.toLowerCase() == "update") {

        console.log("started")

        var timelineItems = require("../schemas/timelineItems.js");

         console.log("timeline items model inserted:", timelineItems)

        timelineItems.findOneAndUpdate({_id: req.body.id}, function (err, post) {
            if (err) {
                next(err);
            }

            console.log("post:", post)

            res.send("item updated!");
        });

        console.log("should be done");

    } else {
        var err = new Error('Access forbidden, please login!');
        err.status = 403;
        next(err);
    }
});

我知道正确的数据是在put请求中运行的,因为我检查了视图上的$ data和后端的req.body的值,所以我不确定为什么这不起作用。

1 个答案:

答案 0 :(得分:0)

你的findOneAndUpdate查询缺少更新参数。

Model.findOneAndUpdate([conditions], [update], [options], [callback])

选中此doc