如何查询/过滤一个用户的所有帖子? (MEAN堆栈)

时间:2017-02-03 21:43:18

标签: angularjs mean-stack

代码:

控制器

(function () {
  'use strict';

  angular
    .module('users')
    .controller('MyArticlesController', MyArticlesController);

  MyArticlesController.$inject = ['$state', '$window', 'UsersService', 'Authentication', 'Notification', 'ArticlesService'];

  function MyArticlesController($state, $window, UsersService, Authentication, Notification, ArticlesService) {
    var vm = this;

    vm.user = Authentication.user;

    vm.articles = ArticlesService.query();


  }
}());

状况:

此代码完美无缺,并显示有史以来创建的所有帖子。

问题:

如何仅查询当前经过身份验证的用户创建的帖子?

语法是什么样的?

2 个答案:

答案 0 :(得分:1)

将过滤器添加到控制器:

vm.authFilter = function(item) {
  return item.author == vm.user;
}

并在ng-repeat中使用它:

<a ng-repeat="article in vm.articles | filter: vm.authFilter" ...>

(假设article.author是文章的作者)

请参阅此处:http://jsfiddle.net/bhz3qvef它是如何运作的。

编辑:

在你的情况下:

vm.authFilter = function(item) {
  return item.user.displayName == vm.user.displayName;
}

答案 1 :(得分:1)

如果您在请求中传递了想要的用户名,那么您可以使用find,如下所示:

exports.list = function (req, res) {
  Article.find({'user.username': req}).exec(function (err, articles) {
    if (err) {
      return res.status(422).send({
        message: errorHandler.getErrorMessage(err)
      });
    } else {
      res.json(articles);
    }
  });
};