【问题标题】:How do I import Users/users collection?如何导入用户/用户集合?
【发布时间】:2017-07-18 04:14:59
【问题描述】:

所以我有以下情况。我返回一个事件,其中包含容器 A 中的一群参与者。容器 B 是 A 的子级,并在订阅准备好并加载数据后立即呈现。 B 现在应该使用所有的参与者 ID 来获取相关的用户信息(即图片和姓名)。

我通常在meteor中访问数据的方式是像这样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)

在我的组件所在的模块中,我像这样导入 Events 集合

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';

现在,由于我想订阅部分用户以及我在 Events.find(fin).fetch() 上面的位置,因此我没有为用户提供该订阅(因为在服务器端,我通过以下方式获取信息Meteor.users.find() ...如果我尝试以与事件类似的方式声明用户集合,我会收到有关重复声明的消息。

【问题讨论】:

    标签: javascript reactjs meteor


    【解决方案1】:

    您不需要声明Users 集合; accounts-base 包提供集合并通过Meteor.users 访问它。 You can read more about that in the Meteor Guide on accounts-base.

    请记住,只发布当前登录用户的用户帐户,因此用户默认无法看到其他用户的信息。如果您想向客户端公开其他用户的数据,您必须编写自己的自定义发布。

    【讨论】:

    • 您好,chazsolo,谢谢您的回复!非常感激。我确实已经有一个用户发布来只公开公共用户数据,我想我很困惑,因为我必须以不同的方式处理它。 IE。而不是做 Events.find({something}) 我必须做 Meteor.users.find({})。我想我的问题是关于如何在客户端导入用户集合以使用它(尤其是在 createContainer 中)。这有意义吗?
    • @FabianBosler 确定!我很确定您不必导入Meteor.users,只需导入Meteor,然后您就可以访问(docs.meteor.com/api/accounts.html#Meteor-users
    • 是的,我实际上已经这样做了。与其他所有系列相比,采用这种有些不同的方式来处理它只是感觉很奇怪。我的意思是它确实有效,但感觉有点统一。
    • @FabianBosler 同意了。我不知道它背后的实际原因,但是,由于它是一个实际的集合,我认为他们不想与用户可以创建的任何集合发生冲突,而是将其附加到 Meteor 对象。只是一个猜测;)
    猜你喜欢
    • 2019-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2018-12-16
    • 2014-11-12
    • 1970-01-01
    相关资源
    最近更新 更多