我的MEAN应用程序中出现了非常令人沮丧和奇怪的事情。我经历了一个Mongoose模型/控制器的基本设置,然后为所有基本的CRUD操作创建了控制器。这起作用,让我有信心继续前进到非平凡的例子。 CRUD的一个非常基本的功能是将更新:PUT添加到我的资源中。作为成功调用更新功能的一部分,我重定向页面。在我的基本控制器中,这工作正常,但使用几乎完全相同的代码,它不适用于我的其他人,而是向/?显示一个非常奇怪的GET请求。
工作代码:
应用/脚本/服务/ person.js
angular.module('infinityApp')
.factory('Person', function ($resource) {
return $resource('/api/persons/:id', null, {
'update': { method: 'PUT' }
});
});
应用/脚本/控制器/ personedit.js
angular.module('infinityApp')
.controller('PersonEditCtrl', function ($scope, $http, Person, $routeParams, $location) {
$scope.form = {};
$scope.person = Person.get({id: $routeParams.id});
$scope.update = function() {
Person.update({id: $routeParams.id}, $scope.person, function() {
$location.path('/person');
});
};
});
服务器输出
GET /api/persons/5321ef1724f30e000027cee3 304 4ms
Updated 5321ef1724f30e000027cee3
PUT /api/persons/5321ef1724f30e000027cee3 200 4ms - 175b
GET /api/persons 304 8ms
非工作代码:
应用/脚本/服务/ role.js
angular.module('infinityApp')
.factory('Role', function ($resource) {
return $resource('/api/roles/:id', null, {
'update': { method: 'PUT' }
});
});
应用/脚本/控制器/ useradmin /角色/ edit.js
angular.module('infinityApp')
.controller('UserAdminRolesEditCtrl', function ($scope, Role, $routeParams, $location) {
$scope.role = Role.get({id: $routeParams.id});
$scope.update = function() {
Role.update({id: $routeParams.id}, $scope.role, function() {
$location.path('/useradmin/roles');
});
};
});
服务器输出
GET /api/roles/532869c90a287b0000466dd7 304 6ms
Updated 532869c90a287b0000466dd7
PUT /api/roles/532869c90a287b0000466dd7 200 6ms - 114b
GET /? 200 3ms - 4.62kb
在调试回调函数时,Role.update的成功永远不会触发。相反,在PUT到我的API(这是成功的)后,GET /?被调用,我最终击中我的.otherwise路线参数。我不知道为什么它与人合作而不是角色合作。如果需要更多信息,请告诉我。
谢谢!