流星& account-base - 如何为不同用户获取数据

时间:2015-07-24 10:14:40

标签: meteor user-accounts

我在流星管理存根中创建的Meteor基础项目:(https://github.com/yogiben/meteor-admin

我需要为所有用户显示头像,而不仅仅是当前用户。 为了显示用户的头像,我需要他的电子邮件地址。 (我正在使用实用程序: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对象。

我在服务器端也有这个代码:

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图书馆会发布出版物或其他内容吗?谢谢你的帮助!

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

2 个答案:

答案 0 :(得分:3)

如果删除包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

答案 1 :(得分:0)

收集:Meteor.users

要访问其他用户数据,只需在服务器端发布:

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

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

Meteor.users.findOne(someId)

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

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