Meteor Collection助手的同步问题

时间:2017-12-20 20:30:51

标签: mongodb reactjs meteor

尝试从集合中访问collection helper时出现以下错误:

  

TypeError:无法读取未定义

的属性'username'

我的帮手/imports/api/.../TaskUser.js:

TaskUser.helpers({
  username() {
     Meteor.subscribe('users');
     elUser = Meteor.users.findOne({_id:this.userId})
     return (elUser.username)
}});

我的组件

renderResponsables(){
  return this.props.TaskUsers.map((OneTaskUser) => (
    <tr key= {resp._id} onClick={() => this.insert(OneTaskUser._id)}>
        <td>{OneTaskUser.username()}</td>
    </tr>
  ));
}

看起来像是同步问题...但我怎么知道它在客户端何时同步?我通常使用subscription.ready()但是这里有一个助手,我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

<强> Advice1: 首先添加以下包

meteor add msavin:mongol

然后运行程序并按&#34; ctrl + m&#34;它会显示数据库表和您订阅的数据。您可以查看您的数据是否已订阅。

<强>建议:2 将您的订阅放在自动运行中的oncreated

Template.Dashboard.onCreated(function(){
   var self = this;
   self.subscribe('users');
});

如果以上dosn工作,那么我需要检查您的用户表,如何创建它以及如何正确地从那里检索数据

答案 1 :(得分:0)

您是否检查了此https://guide.meteor.com/react.html#data。您应该使用提供名为react-meteor-data的函数的withTracker包。您的订阅应该进入它,您必须使用容器包装组件以传递数据。