使用流星列出客户端上的所有用户

Posted

技术标签:

【中文标题】使用流星列出客户端上的所有用户【英文标题】:Listing all users on client with meteor 【发布时间】:2012-11-12 07:57:51 【问题描述】:

根据流星文档,如果安装了自动发布包,所有用户都应该发布到所有客户端。

http://docs.meteor.com/#meteor_users

我已经安装了自动发布包,但是在Meteor.users 上使用forEach 只会列出当前登录的用户。

有没有更正确的方法使用coffeescript列出客户端上的所有用户?

【问题讨论】:

这是文档中的错误吗?有一个相关的已关闭问题github.com/meteor/meteor/issues/517 【参考方案1】:

这是 Meteor 的 Parties example 的摘录:

// in server.js
Meteor.publish("directory", function () 
  return Meteor.users.find(, fields: emails: 1, profile: 1);
);

// in client.js
Meteor.subscribe("directory");

【讨论】:

示例已不存在,如何迭代模板中的每个用户? 这里是:github.com/meteor/meteor/tree/devel/examples/other/parties(代码相同,更新链接)【参考方案2】:

如果您在不使用订阅的情况下自动发布用户集合

if Meteor.isServer

    Meteor.publish null, ->
        Meteor.users.find ,
            fields:
                username: 1
                profile: 1

如果你想订阅指定用户,你可以

if Meteor.isServer

    Meteor.publish 'users-by-selector', (options) ->
        Meteor.users.find options, # options as selector like $in: name: 'john'
            fields: # use fields to only publish specify fields you want to send. 
                username: 1
                profile: 1

if Meteor.isClient

    Meteor.autosubscribe ->
        options = Session.get 'your mongodb selector'
        Meteor.subscribe 'users-by-selector', options, ->
            console.log 'on Subscribe Complete Callback.'
            if Meteor.users.find().count()
                Session.set 'specifyUsersLoaded', true

【讨论】:

您的第一个 sn-p 有效,尽管我必须在 fields: 下添加 emails: 1,因为 usernameprofile 对于所有用户都是空的。显然,除非在其自动发布的字段中有值,否则不会自动发布用户。 我没有找到@danielsvane 提到的限制。不过要注意的一件事是,不同的提供程序包提供不同的数据结构。当您考虑它时,这是有道理的,但如果您还没有准备好,它可能会令人困惑。上面@crapthings 的代码(包括profileusername)可以很好地获取Facebook 和accounts-password 软件包的用户名。要从user 记录中获取用户名,您需要user.username || user.profile.name 伟大而有帮助的答案 +1,但假设 CoffeeScript 为 -1。问题未标记为 CoffeeScript。它不叫 Meteor.coffee @BjornTipling 我使用的是 CoffeeScript,所以他的回答很准确。 @danielsvane 您在问题中究竟在哪里使用了 CoffeeScript?

以上是关于使用流星列出客户端上的所有用户的主要内容,如果未能解决你的问题,请参考以下文章

如何在流星内访问客户端上的服务器聚合

如何在本地机器上的 2 个流星应用程序之间可靠地共享 mongo 数据库?

Keycloak 列出 SPA 中的所有领域

流星中minimongo的原因是啥

流星测试:Mocha没有找到所有测试文件

Meteor 为数千个并发用户提供服务器端内存使用情况