我在流星管理存根中创建的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
图书馆会发布出版物或其他内容吗?谢谢你的帮助!
加分问题:我只想访问有关用户的一些信息(电子邮件地址)。
答案 0 :(得分:3)
如果删除包autopublish
,则需要明确指定服务器发送给客户端的内容。您可以通过Meteor.publish
和Meteor.subscribe
完成此操作。
例如,要发布您可以执行的所有用户的电子邮件地址:
if (Meteor.isServer) {
Meteor.publish('emailAddresses', function() {
return Meteor.users.find({}, {
fields: {
'email': 1
}
});
});
}
之后,您需要在客户端订阅该出版物:
if (Meteor.isClient) {
Meteor.subscribe("emailAddresses");
}
答案 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'}})