Meteor显示除当前登录用户之外的所有用户

时间:2016-01-22 12:46:53

标签: javascript mongodb meteor spacebars

我目前正在使用Meteor做一个简单的应用程序,它需要显示除当前登录用户以外的所有用户。

这是我的“用户”模板,其中显示了所有用户:

<template name="friends">
    {{#each listUser}}
        <p id="userNameOnList">{{profile.firstname}} {{profile.lastname}} <a href="#" class="btn btn-primary btnAddFriend">Add Friend</a></p>
    {{/each}}
</template>

这是我的模板助手:

Template.friends.helpers({
    listUser: function(){
        return Meteor.users.find({},{sort:{'profile.firstname': 1}});
    }
});

我有点迷失在这里,你能就我如何处理这个问题提出想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

在查询中添加您当前的userId。我没有测试查询但它会起作用

Template.friends.helpers({
    listUser: function(){
        return Meteor.users.find({_id:{$ne:Meteor.userId()}},{sort:{'profile.firstname': 1}});
    }
});

答案 1 :(得分:1)

docs 是您的朋友。正如它明确陈述

  

与所有Mongo.Collections一样,您可以访问所有文档   服务器,但只有服务器专门发布的服务器   可在客户端获得。

     

默认情况下,当前用户的用户名,电子邮件和个人资料均为   发布给客户。您可以发布其他字段   当前用户:

function blockButtons() {
   $('button:submit').click(function(){
      var form = $(this).parents('form:first');
    $('button:submit').attr("disabled", true);
    $('button:submit').css('opacity', 0.5);
    form.submit();
   });
}
  

如果安装了自动发布包,则提供有关所有用户的信息   在系统上发布给所有客户。这包括用户名,   配置文件以及服务中要公开的任何字段(例如,   services.facebook.id,services.twitter.screenName)。另外,什么时候   使用自动发布更多信息是为当前发布的   登录用户,包括访问令牌。这允许进行API调用   直接从客户端获取允许此服务的服务。

从上面构建,您可以自定义自己的发布功能。您首先需要从Mongo.users集合中获取当前登录用户的_id。然后在查询中使用它来返回所有内容 用户减去当前登录用户:

// server
Meteor.publish("userData", function () {
  if (this.userId) {
    return Meteor.users.find({_id: this.userId},
                             {fields: {'other': 1, 'things': 1}});
  } else {
    this.ready();
  }
});

// client
Meteor.subscribe("userData");