如何使用angularJS和express删除帖子?
我的post.serv.js中有这段代码,我想在控制器中执行函数delete如何使用angularJS和express删除帖子?,angularjs,express,Angularjs,Express,我的post.serv.js中有这段代码,我想在控制器中执行函数delete "use strict"; app.factory('JnttPost', function ($resource) { var PostResource = $resource('/api/post/:_id', { _id: "@id" }, { update: { method: 'PUT', isArray: fa
"use strict";
app.factory('JnttPost', function ($resource) {
var PostResource = $resource('/api/post/:_id', {
_id: "@id"
}, {
update: {
method: 'PUT',
isArray: false
}
}, {
delete: {
method: 'DELETE',
isArray: false
}
});
return PostResource;
});
我已经知道如何获取和更新帖子,例如在我的createpost.serv.js中
"use stric";
app.factory('JnttCreatePost', function ($http, $q, JnttPost) {
return {
createPost: function (newPostData) {
var newPost = new JnttPost(newPostData);
var dfd = $q.defer();
newPost.$save().then(function () {
dfd.resolve();
}, function (response) {
dfd.reject(response.data.reason);
});
return dfd.promise;
}
};
});
在我的newpost.ctrl.js中
"use strict";
app.controller('CtrlNewPost',
function ($scope, $location, JnttIdentity, JnttNotifier, JnttCreatePost) {
var email = ...;
$scope.newPost = function () {
var newPostData = {...};
JnttCreatePost.createPost(newPostData).then(function () {
JnttNotifier.notify('success', 'The post has been created');
$location.path('/');
}, function (reason) {
JnttNotifier.notify('error', reason);
});
};
});
我无法实现如何执行删除请求,我可以使用$http
在do deletePost()函数的新控制器中,我有:
$scope.deletePost=函数(){
var pwd=jntIdentity.currentUser.hashed_pwd
var postidd = {
password: pwd,
id: $scope.post._id
};
var config = {
method: "DELETE",
url: '/api/post/',
data: postidd,
headers: {
"Content-Type": "application/json;charset=utf-8"
}
};
$http(config);
$location.path('/');
})
这实际上已经完成了这项工作,但我想在没有$http的情况下完成这项工作,比如create请求,我如何才能做到这一点?如何编辑下面的代码以执行请求
createPost: function (newPostData) {
var newPost = new JnttPost(newPostData);
var dfd = $q.defer();
newPost.$save().then(function () {
dfd.resolve();
}, function (response) {
dfd.reject(response.data.reason);
});
return dfd.promise;
}
在express中的my routes.js中,我有以下路线:
app.delete('/api/post/', posts.deletePost);
您可以对创建的$resource类(JnttPost)调用delete,也可以对从$resource类返回的post调用$delete $resource类已经包含get/save/query/remove/delete函数,因此您不需要添加delete(save是create/POST,因此您需要包含updatewithput) 下面是使用$resource类调用delete的示例:
angular.module('test', ['ngResource'])
.factory('JnttPost', function ($resource) {
var PostResource = $resource('/api/post/:_id', {
_id: "@id"
}, {
update: {
method: 'PUT',
isArray: false
}
});
return PostResource;
})
.run(function(JnttPost){
JnttPost.delete({id: 123123123});
});
我如何从post.ctrl.js调用delete函数呢?您需要注入JnttPost并对其调用delete(传递id)。或者,如果您已经有一个来自上一次get/query调用的对象,您可以对该对象调用$delete。该调用的代码是什么?$scope.deletePost=function(){var pwd=jntIdentity.currentUser.hashed_pwd;var postidd={password:pwd,id:$scope.post._id};//调用delete方法,如何执行?}
jntpost.delete({id:$scope.post.\u id})
或$scope.post.$delete()
post.serv.js[code]“使用严格”;app.factory('JnttPost',function($resource){var PostResource=$resource('/api/post/:\id',{id:@id},{update:{method:'PUT',isArray:false}}});return PostResource;})[code]在我的post.ctrl.js中应该是[code]$scope.deletePost=function(){var pwd jntidentity.currentUser.hashed\u pwd{密码:pwd,id:$scope.post.\u id};JnttPost.delete({id:postidd})};[code]对吗?