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

时间:2015-04-15 00:32:44

标签: 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: 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 在我的新控制器for do deletePost()函数中我有这个:

$ scope.deletePost = function(){     var pwd = JnttIdentity.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,我怎么能这样做?如何编辑此代码以执行请求?

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

在我的routes.js中,我有这条路线:

app.delete('/api/post/', posts.deletePost);

1 个答案:

答案 0 :(得分:0)

您可以在您创建的$ resource类(JnttPost)上调用delete,也可以在$ resource类返回的帖子上调用$ delete。

$ resource类已包含get / save / query / remove / delete函数,因此您不需要添加删除(save是create / POST,因此您需要包含PUT更新)。 / p>

以下是使用$ 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});
});