gpt4 book ai didi

node.js - 在 AngularJS 中使用 $resource 删除发布的内容

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:55 24 4
gpt4 key购买 nike

我是 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、express、bodyParser 和 cors 作为依赖项,并创建了我的端点:

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');
};

对此的任何指导将不胜感激。我已经尽了一切努力让它发挥作用,但到目前为止还没有成功。

最佳答案

看来将 _id 放入查询字符串的角度代码与将其作为路由参数查找的快速代码(在 URL 的路径部分中查找)之间不匹配。 req.params 来自?之前的路径部分。 req.query 来自? 之后的查询字符串部分。使用 REST 形式的路径更为传统,因此我建议更改 AngularJS 代码,将 /tasks/:_id 作为资源路由。

旁白:最好在浏览器 JS 中使用相对路径,并省略协议(protocol)、主机和端口。否则,当您将应用部署到真实网络上时,您的应用将无法运行。

关于node.js - 在 AngularJS 中使用 $resource 删除发布的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24816443/

24 4 0
文章推荐: node.js - 对象 # 没有方法 'on' ?