在AngularJS中使用$ resource删除发布的内容

我是AngularJS的新手,尝试使用$ resource发布和删除内容。 我有张贴工作正常,但是当我尝试删除我已经张贴的东西,我得到一个404错误。

DELETE http://localhost:3000/tasks?__v=0&_id=53c5ddcf2978af0000ccdc50&beginningDat…vacy=true&title=This+is+a+complete+task&website=http:%2F%2Fwww.hotmail.com 404 (Not Found) 

我一直在这个工作了几天,我只是没有看到我失踪。 我正在使用MEAN堆栈。 我在app.js中有mongoose,快车,bodyParser和cors作为依赖,并创build了我的terminal:

 app.get('/tasks', api.getTask); app.post('/tasks', api.postTask); app.delete('/tasks/:_id', api.deleteTask); 

这里是我的api.js中的代码

 exports.deleteTask = function(req, res){ var _id = req.params._id; Task.remove({_id:_id}, function(err, task){ res.send(task + ' removed task successfully'); if(err){ res.send('Hey guys...he is still here.'); } }); }; 

这是我的工厂/服务:

 'use strict'; angular.module('achievementApp').factory('tasks', function($resource){ return $resource('http://localhost:3000/tasks/',{_id: '@_id'},{ get: {method:'GET', isArray: true}, add: {method:'POST'}, delete: {method: 'DELETE'} }); }); 

这里是从Ctrl的代码:

 $scope.taskList = tasks.get({}); $scope.removeTask = function(obj){ tasks.delete(obj); var index = $scope.taskList.indexOf(obj); console.log(index); $scope.taskList.splice(index,1); console.log('removeTask was called'); }; 

任何指导,将不胜感激。 我已经尝试过所有我能做到的事情,迄今为止还没有运气。

它看起来像是在查询string中放置_id的angular码和正在寻找它作为路由参数的expression代码之间存在不匹配,该路由参数在URL的path部分中查找。 req.params来自前面的path部分?req.query来自查询string部分之后? 。 按照REST来使用path会更传统一点,所以我build议将你的angularjs代码改为拥有/tasks/:_id作为资源路由。

另外:最好在你的浏览器JS中使用相对path,并省略协议,主机和端口。 否则,当您在真实networking上部署应用时,您的应用将无法正常工作。

Interesting Posts