我发布到/更新路线。
这样可行,因为我可以在终端中看到我的console.log()项目打印,请参见此处:
但是,我的代码似乎完全忽略了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的值,所以我不确定为什么这不起作用。
答案 0 :(得分:0)
你的findOneAndUpdate查询缺少更新参数。
Model.findOneAndUpdate([conditions], [update], [options], [callback])
选中此doc