Meteor & account-base - 如何获取不同用户的数据

Meteor & account-base - how to get data for different users

我在 Meteor 中从 Meteor-admin 存根创建了基本项目:(https://github.com/yogiben/meteor-admin)

我需要为所有用户显示头像,而不仅仅是当前用户。 为了显示用户的头像,我需要他的电子邮件地址。 (我正在使用 utilities:avatar https://atmospherejs.com/utilities/avatar

问题:我应该对项目进行哪些调整才能访问其他用户的数据?

可能跟发布用户有关系

目前我有:

{{> avatar user=getAuthor shape="circle" size="small"}}         

getAuthor: ->
  console.log 'Owner:'
  console.log @owner
  user = Meteor.users.findOne(@owner)
  console.log user
  user

这会为所有用户正确打印 Owner: @owner (id),但是 user object 只会为当前用户填充。

我在server-side中也有这个代码:

Meteor.publishComposite 'user', ->
  find: ->
    Meteor.users.find _id: @userId
  children: [
    find: (user) ->
      _id = user.profile?.picture or null
      ProfilePictures.find _id: _id
    ]

(children / ProfilePicture 无关紧要)

我认为 account-base 图书馆关闭了发布之类的?感谢您的帮助!

奖金问题:我只想访问有关用户(电子邮件地址)的一些信息。

拥有collection:Meteor.users

要访问其他用户的数据,只需将其发布到 server-side:

Meteor.publish 'userData', ->
    Meteor.users.find()

在客户端,您不必使用任何 userData 引用。只需访问它:

Meteor.users.findOne(someId)

要仅允许访问特定信息,请使用 fields 参数发布:

Meteor.publish 'userData', ->
    Meteor.users.find({},{fields: {'_id', 'emails', 'username'}})

如果删除包 autopublish,则需要明确指定服务器向客户端发送的内容。您可以通过 Meteor.publishMeteor.subscribe.

执行此操作

例如,要发布您可以执行的所有用户的电子邮件地址:

if (Meteor.isServer) {
    Meteor.publish('emailAddresses', function() {
        return Meteor.users.find({}, {
            fields: {
                'email': 1
            }
        });
    });
}

之后需要在客户端订阅发布:

if (Meteor.isClient) {
    Meteor.subscribe("emailAddresses");
}

详细了解 Meteor's publish and subscribe functionality