如何使用angularJS和express删除帖子?

如何使用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

我的post.serv.js中有这段代码,我想在控制器中执行函数delete

"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]对吗?