2017-12-07 7 views
0

私はMEANスタックを使用して簡単なブログを作成しています。データベースから1つを削除するとポストがリフレッシュされません

ここで私はすべての私の記事を検索するために使用しているHTML部分です:

index.html<i class="fa fa-times" aria-hidden="true"></i>FontAwesomeライブラリ

から取られたアイコンはここに私のコントローラですされていますことを

<div ng-repeat="post in posts"> 
    <h2> 
    {{post.title}} 
    <a ng-click="deletePost(post._id)"class="pull-right"><i class="fa fa-times" aria-hidden="true"></i></a> 
    </h2> 
    <em>{{post.posted}}</em> 
    <p>{{post.body}}</p> 
</div> 

注角型アプリの場合:

(function() { 
    angular 
    .module("BlogApp", []) 
    .controller("BlogController", BlogController); 

    function BlogController($scope, $http) { 
     $scope.createPost = createPost; 
     $scope.deletePost = deletePost; 

     function init() { 
     getAllPosts(); 
     } 
     init(); 

     function deletePost(postId) { 
     $http.delete('/api/blogpost/' + postId).then(getAllPosts); 
     } 
     function getAllPosts() { 
     $http.get("/api/blogpost").then(function(posts){ 
     $scope.posts = posts.data 
    }); 
    } 

そしてここで、削除要求を処理する私のサーバーの一部です:

// deletePost 
app.delete('/api/blogpost/:id', deletePost); 

function deletePost(req, res) { 
    var postId = req.params.id; 
    PostModel.remove({_id: postId}).then(
    function() { 
     res.sendstatus(200); 
    }, 
    function() { 
     res.sendStatus(400); 
    } 
); 
} 

Xのアイコンをクリックすると、アクションが私のコントローラを打つん、サーバーに到達し、自分のデータベースからではなく、何らかの理由で投稿を削除するために管理しますすべての自分の投稿で自動的にページを更新するわけではありません。私はそれをリフレッシュする必要があります。だから私は、サーバに当たった直後にコントローラのgetAllPostsという関数を呼び出して、データを更新すると思ったのです。私は何が欠けていますか?

+0

それは '$ scope.post'すべきではありません? – wrangler

+0

タイトルとボディのモデルを 'ng-model =" post.title "'として追加したので、postsはpostオブジェクトの配列です。 正直なところ、何が書かれているのか分かりませんが、サーバーに 'deletePost'関数を書き直しました。私はそれがマングースの約束の問題だったと思う。私はまだそれが正直であることをかなり混乱させることがわかります。 – user7496931

+0

あなたはあなたの質問に答えて、それを受け入れて閉じなければなりません – wrangler

答えて

0

特定の投稿を削除した後、私はmongooseの約束を書き直してしまい、うまくいきました。

// deletePost 
function deletePost(req, res) { 
    var postId = req.params.id; 
    PostModel.remove({ _id: postId}).then(function(err){ 
    if (err) { console.log(err); } 
    res.send('Post deleted'); 
    }); 
} 

また、これは動作するようです:

function deletePost(req, res) { 
    var postId = req.params.id; 
    PostModel.remove({ _id: postId}).then(
    function(status) { 
     res.sendStatus(200) 
    }, function() { 
     res.send(400); 
    } 
); 
} 

マングースの約束の操作方法に関してはまだ少し混乱して...

関連する問題