2017-07-17 60 views
1

所以我有以下情況。我向容器A中的一羣參與者返回一個事件。容器B是A的子項,只要訂閱已準備好並且數據已加載,就會立即呈現該容器。 B現在應該使用所有的參與者id來獲取相關的用戶信息(即圖片和名稱)。如何導入用戶/用戶集合?

的方式,我通常是在流星訪問數據是通過做createContainer這樣的:

const ComponentContainer = createContainer((props) => { 
    const eventSub = Meteor.subscribe('getEvent',props.find.filter); 
    const loading = !eventSub.ready(); 
    const eventData = loading ? null : Events.find(fin).fetch()[0]; 
    const eventDataExists = !loading && !!eventData; 
    return { 
    loading, 
    eventData, 
    eventDataExists, 
    } 
}, Component) 

在MODUL我的組件的生命在我導入活動收集這樣的:

import { Events } from '/imports/api/collections' 

我已經在/ imports/api/collections中定義了所有我的集合,如下所示:

import { Mongo } from 'meteor/mongo' 
export const Events = new Mongo.Collection('events'); 

我也匯入我的服務器的集合像這樣(在/server/main.js)

import { 
    Events, 
    ..., 
} from '/imports/api/collections'; 

現在,我想用一個訂閱的用戶的一部分,在那裏我有上述活動.find(fin).fetch()我沒有這樣的用戶(因爲在服務器端我通過Meteor.users.find()獲取信息...如果我嘗試以類似的方式聲明Users集合活動,我收到有關重複申報的消息。

回答

1

您不需要聲明Users集合; accounts-base包提供了與Meteor.users的收集和訪問。 You can read more about that in the Meteor Guide on accounts-base

請記住,只有當前登錄的用戶的用戶帳戶已發佈,以便用戶不能默認查看其他用戶的信息。如果您想要將其他用戶的數據公開給客戶端,則必須編寫自己的自定義發佈。

+0

嗨chazsolo,thx爲您的答覆!非常感激。我已經有一個用戶發佈只公開用戶數據,我想我很困惑,因爲我必須以不同的方式處理它。即而不是做Events.find({something})我必須做Meteor.users.find({})。我想我的問題是關於如何在客戶端導入用戶集合以使用它(特別是在createContainer中)。這有意義嗎? –

+0

@FabianBosler當然!我敢肯定,你不必導入'Meteor.users',只需'Meteor',然後你就可以訪問(http://docs.meteor.com/api/accounts.html#Meteor-users) – chazsolo

+0

是的,我已經這樣做了。與其他任何收藏品相比,這種方式有點不同,感覺很奇怪。我的意思是它的工作原理和所有,但它感覺有點統一。 –

相關問題