我目前正在发布群组中的用户列表。虽然这有效,但我无法阻止当前用户出现在列表中。如何删除当前用户。提前感谢任何建议和帮助。
路径:publish.js
Meteor.publish('studentList', function (group) {
if (Roles.userIsInRole(this.userId, ['teacher'], group)) {
return Meteor.users.find({roles:'student'}, {fields:{emails:1, profile: 1, roles: 1}});
} else {
// user not authorized. do not publish secrets
this.stop();
return;
}
});
路径:studentList.js
Template.studentList.onCreated(function() {
var self = this;
self.autorun(function() {
self.subscribe('studentList')
});
});
Template.studentList.helpers({
studentList: ()=> {
return Meteor.users.find({});
},
});
答案 0 :(得分:3)
在您的客户端代码中,您可以排除用户ID与当前用户匹配的用户:
Template.studentList.helpers({
studentList: ()=> {
return Meteor.users.find({_id: { $ne: Meteor.userId() }});
},
});
或者您可以通过执行Meteor.users.find({})。fetch()。someRemoveLogic()来从客户端的结果中删除它。
答案 1 :(得分:3)
默认情况下,登录用户的数据会订阅到客户端。没有办法删除该订阅。因为引擎盖下Meteor.user()
起作用。如果您需要将其从客户端帮助程序中排除,则可以进行排除当前用户数据的查询。一个例子就是这个
Meteor.users.find({_id: { $ne: Meteor.userId()}});