删除自动发布后,模板循环遍历用户集合
Template is looping through users collection when autopublish is removed
我为一个网站编写了代码,允许您登录并与其他用户聊天。根页面有一个您可以聊天的用户列表。这是代码:
<!-- Top level template for the lobby page -->
<template name="lobby_page">
{{> available_user_list}}
</template>
<!-- display a list of users -->
<template name="available_user_list">
<h2 class="cha_heading">Choose someone to chat with:</h2>
<div class="row">
{{#each users}}
{{> available_user}}
{{/each}}
</div>
</template>
<!-- display an individual user -->
<template name="available_user">
<div class="col-md-2">
<div class="user_avatar">
{{#if isMyUser _id}}
<div class="bg-success">
{{> avatar user=this shape="circle"}}
<div class="user_name">{{getUsername _id}} (YOU)</div>
</div>
{{else}}
<a href="/chat/{{_id}}">
{{> avatar user=this shape="circle"}}
<div class="user_name">{{getUsername _id}}</div>
</a>
{{/if}}
</div>
</div>
</template>
和辅助函数:
Template.available_user_list.helpers({
users:function(){
return Meteor.users.find();
}
})
Template.available_user.helpers({
getUsername:function(userId){
user = Meteor.users.findOne({_id:userId});
return user.username;
},
isMyUser:function(userId){
if (userId == Meteor.userId()){
return true;
}
else {
return false;
}
}
})
我已经为聊天收集编写了 publish/subscribe 代码,但那是在您单击其中一个用户并向他们发送消息时使用的。现在我已经删除了自动发布,在根页面中,用户看不到任何其他用户可以点击。有人可以帮忙解决这个问题吗?
Meteor.users 如果删除了自动发布,则只会发布当前用户的个人资料。
将以下发布添加到您的服务器代码:
Meteor.publish(null, function () {
if (!this.userId) return this.ready();
return Meteor.users.find({});
});
如果删除自动发布,客户端将自动发布和自动订阅空发布。
此外,请记住仅包含那些不敏感的字段。对于,例如。您可能希望省略密码字段或服务字段。
像这样:
Meteor.users.find({}, {
fields: {
profile : 1,
emails : 1
}
});
我为一个网站编写了代码,允许您登录并与其他用户聊天。根页面有一个您可以聊天的用户列表。这是代码:
<!-- Top level template for the lobby page -->
<template name="lobby_page">
{{> available_user_list}}
</template>
<!-- display a list of users -->
<template name="available_user_list">
<h2 class="cha_heading">Choose someone to chat with:</h2>
<div class="row">
{{#each users}}
{{> available_user}}
{{/each}}
</div>
</template>
<!-- display an individual user -->
<template name="available_user">
<div class="col-md-2">
<div class="user_avatar">
{{#if isMyUser _id}}
<div class="bg-success">
{{> avatar user=this shape="circle"}}
<div class="user_name">{{getUsername _id}} (YOU)</div>
</div>
{{else}}
<a href="/chat/{{_id}}">
{{> avatar user=this shape="circle"}}
<div class="user_name">{{getUsername _id}}</div>
</a>
{{/if}}
</div>
</div>
</template>
和辅助函数:
Template.available_user_list.helpers({
users:function(){
return Meteor.users.find();
}
})
Template.available_user.helpers({
getUsername:function(userId){
user = Meteor.users.findOne({_id:userId});
return user.username;
},
isMyUser:function(userId){
if (userId == Meteor.userId()){
return true;
}
else {
return false;
}
}
})
我已经为聊天收集编写了 publish/subscribe 代码,但那是在您单击其中一个用户并向他们发送消息时使用的。现在我已经删除了自动发布,在根页面中,用户看不到任何其他用户可以点击。有人可以帮忙解决这个问题吗?
Meteor.users 如果删除了自动发布,则只会发布当前用户的个人资料。
将以下发布添加到您的服务器代码:
Meteor.publish(null, function () {
if (!this.userId) return this.ready();
return Meteor.users.find({});
});
如果删除自动发布,客户端将自动发布和自动订阅空发布。
此外,请记住仅包含那些不敏感的字段。对于,例如。您可能希望省略密码字段或服务字段。
像这样:
Meteor.users.find({}, {
fields: {
profile : 1,
emails : 1
}
});