Express + Angular update route: Error: Cannot PUT
Express + Angular update route: Error: Cannot PUT
我正在尝试使用表单更新架构,但是,在 app.put 和 app.post 上(我认为这是一个可能的解决方案)我得到
PUT https://myapp-demo.herokuapp.com/api/events/5523da4d97c5000300f6e713 404 (Not Found)
和来自 ajax 回调的错误
Error: Cannot PUT /api/events/5523da4d97c5000300f6e713
在客户端,我提出这个要求:
$scope.saveEvent = function(id) {
$http.put('../api/events/' + id, $scope.formData)
.success(function (data) {
$scope.events = data;
})
.error(function(data) {
console.log('Error: ' + data);
})
};
在快速路线中,我这样做:
app.put('../api/events/:id', function (req, res){
var user = req.user;
var id = req.params.id;
var update = {
$set: {
title: req.body.title,
description: req.body.description,
}
};
Event.findByIdAndUpdate(id, update, function (err, event) {
if(!event) {
res.statusCode = 404;
return res.send({ error: 'Not found' });
}
console.log("event updated");
Event.find(function(err, events) {
if (err){
res.send(err)
};
res.json(events);
});
});
});
我尝试以不同的方式传递 event._id,通过使用 req.params.id 并以 req.body.id 的形式传递 id,这都会导致相同的结果。我还阅读了有关创建隐藏输入以帮助方法覆盖覆盖表单方法的信息。然而,有了这个并没有帮助。
<input type="hidden" name="_method" value="put">
<md-button class="md-raised md-primary" ng-click="saveEvent(eventId)">Save</md-button>
更新
确实,最初的问题出在我的放置路径上。我现在发现了一个新问题。当我再次尝试更新时,我得到
Error: Object {error: "Not found"}
即使在我刷新页面或重启服务器后也会发生。
以下无效:
app.put('../api/events/:id'...
它需要引用命名空间,或者在您的情况下是根:
app.put('/api/events/:id'...
我正在尝试使用表单更新架构,但是,在 app.put 和 app.post 上(我认为这是一个可能的解决方案)我得到
PUT https://myapp-demo.herokuapp.com/api/events/5523da4d97c5000300f6e713 404 (Not Found)
和来自 ajax 回调的错误
Error: Cannot PUT /api/events/5523da4d97c5000300f6e713
在客户端,我提出这个要求:
$scope.saveEvent = function(id) {
$http.put('../api/events/' + id, $scope.formData)
.success(function (data) {
$scope.events = data;
})
.error(function(data) {
console.log('Error: ' + data);
})
};
在快速路线中,我这样做:
app.put('../api/events/:id', function (req, res){
var user = req.user;
var id = req.params.id;
var update = {
$set: {
title: req.body.title,
description: req.body.description,
}
};
Event.findByIdAndUpdate(id, update, function (err, event) {
if(!event) {
res.statusCode = 404;
return res.send({ error: 'Not found' });
}
console.log("event updated");
Event.find(function(err, events) {
if (err){
res.send(err)
};
res.json(events);
});
});
});
我尝试以不同的方式传递 event._id,通过使用 req.params.id 并以 req.body.id 的形式传递 id,这都会导致相同的结果。我还阅读了有关创建隐藏输入以帮助方法覆盖覆盖表单方法的信息。然而,有了这个并没有帮助。
<input type="hidden" name="_method" value="put">
<md-button class="md-raised md-primary" ng-click="saveEvent(eventId)">Save</md-button>
更新
确实,最初的问题出在我的放置路径上。我现在发现了一个新问题。当我再次尝试更新时,我得到
Error: Object {error: "Not found"}
即使在我刷新页面或重启服务器后也会发生。
以下无效:
app.put('../api/events/:id'...
它需要引用命名空间,或者在您的情况下是根:
app.put('/api/events/:id'...