當我嘗試從視圖中刪除一個帖子顯然表明它被刪除。然而,當我回到供應商路線,我可以通過下面的路線找到所有以前的數組成員。但是,當我在/帖子的路線不顯示我以前刪除的成員。有趣的是,刷新頁面後,它不再顯示我在我的視圖上的記錄。 在以下的路徑,交消失而我嘗試從命令提示:刪除函數的API不再工作,不會從數組中刪除任何東西?
/提供商/ 553b72c9f6d0020425d37f37 /帖
router.get('/providers/:provider/posts', function(req, res) { Provider.findById(req.params.provider).select('posts').populate('posts').exec(function(err, provider) {
if(err){ return next(err); }
res.json(provider.posts);
});
});
然而,在這條路線,我可以找到帖子陣列9構件。看來,任何刪除不起作用。
router.get('/providers', function(req, res, next) {
Provider.find(function(err, providers){
if(err){ return next(err); }
res.json(providers);
});
});
這裏是服務器端的我的刪除功能:
router.delete('/providers/:provider/posts/:post',auth, function(req, res){
console.log("I ma running from server")
return Post.findById(req.params.post, function(err, post){
return post.remove(function(err){
if(!err){
Post.update({_id: post.provider}, {$pull : {posts : post._id}}, function(err, numberAffected){
console.log(numberAffected);
if(!err){
return console.log('removed post id');
} else {
return console.log(err);
}
});
console.log('post removed');
return res.send('');
} else{
console.log(err);
}
});
});
});
在這裏,我有我的工廠裏面的客戶端:
ob.deletePost = function (provider_id,post_id) {
return $http.delete(urlBase +'/providers/' + provider_id +'/posts/' + post_id ,
{
headers: {Authorization: 'Bearer '+auth.getToken()}
});
};
並在控制器:
$scope.deletePost= function (provider_id,post_id) {
//console.log('PROVIDER',provider_id);
// console.log('POST',post_id);
// console.log('COMMENT',comment_id);
providers.deletePost(provider_id,post_id)
.success(function() {
$scope.status = 'Deleted Post! Refreshing post list.';
for (var i = 0; i < $scope.provider.posts.length; i++) {
var post = $scope.provider.posts[i];
// console.log(i,comment,comment_id)
//console.log(comment.ID);
if (post._id === post_id) {
//console.log(provider._id === provider_id)
// console.log(provider._id);
$scope.provider.posts.splice(i, 1);
//providers.getAllComments();
break;
}
}
// $scope.providers = null; // i am not sure how to write for comment as well?
})
.error(function (error) {
$scope.status = 'Unable to delete comment: ' + error.message;
});
};
這是我的一部分視圖:
<div ng-repeat="provider in providers"> <!-- | orderBy:'-upvotes'-->
<span class="glyphicon glyphicon-thumbs-up"
ng-click="incrementUpvotes(provider)"></span>
<span style="font-size:18px; margin-left:10px;">
{{provider.upvotes}} - <strong>{{provider.name}}</strong>
<span ng-if="provider.posts.length !== 0">
<a ui-sref="post({provider_id : provider._id})">{{provider.posts.length}} Posts </a>
<button class="btn btn-xs btn-info pull-right" ng-click="modalUpdateProvider('size',provider)">Edit</button>
</span>
決不provider.posts.length正在更新。對於觀看供應商和後視圖您可以查看以下link。 謝謝。
刪除服務器端的帖子,但不更新客戶端的提供程序。您必須重新加載提供程序或手動刪除帖子。 – Michael
@ michael,我更新了一個。我在控制器裏面做了。 –