我目前正在使用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}});
}
});
我有点迷失在这里,你能就我如何处理这个问题提出想法吗?谢谢!
答案 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");