【发布时间】:2018-05-17 16:17:13
【问题描述】:
我的 Meteor 应用程序中有用户可以加入的“组”。在组页面上,我显示了已加入的用户列表。我是这样发布的:
Meteor.publish("allUsers", function() {
return Meteor.users.find({}, {fields: {name: 1, groups: 1}});
});
但是 id 也希望用户可以选择公开或私下加入群组。我能想到的唯一方法是为私人加入的组设置另一个字段,该字段仅发布给当前用户:
Meteor.publish('currentUser', function() {
return Meteor.users.find(
{ _id: this.userId },
{ fields: { name: 1, groups: 1, groups-private: 1 } },
);
});
这将允许我向当前用户显示他们私下加入的任何组,并显示公共组数据。
但是,这种方法有其局限性。我不能显示一个组的成员总数,任何私人成员都不能计算在内。我怎样才能绕过这个?我需要在组集合中存储号码吗?如果我这样做,我担心会获得比赛条件。
【问题讨论】:
-
groups和groups-private的结构如何?它只是一组组名吗?也许您可以像您建议的那样拥有一个单独的集合,并在 allUsers 上运行一个观察者。如果新插入或更改或删除用户文档,则通过观察者相应地增加或减少计数。 -
基本上是的,用户上的 groups 和 groups-private 字段是与组相关的 ID 数组。