Javascript Meteor React订阅特定的收集数据

Javascript Meteor React订阅特定的收集数据,javascript,reactjs,meteor,Javascript,Reactjs,Meteor,我正在构建一个React-Meteor web应用程序,我需要访问一个集合中的特定数据段 有三个主要部分:公司列表、项目列表和任务列表。当我列出所有公司时,我可以选择一个,然后显示与该公司关联的所有项目。然后我想做的是单击一个项目,查看与该项目关联的所有任务。我的数据结构如下(如您所见,项目是一个对象数组): 在我的任务列表组件中,我像这样导出它: export default createContainer((props) => { const {companyId} = pro

我正在构建一个React-Meteor web应用程序,我需要访问一个集合中的特定数据段

有三个主要部分:公司列表、项目列表和任务列表。当我列出所有公司时,我可以选择一个,然后显示与该公司关联的所有项目。然后我想做的是单击一个项目,查看与该项目关联的所有任务。我的数据结构如下(如您所见,项目是一个对象数组):

在我的任务列表组件中,我像这样导出它:

export default createContainer((props) => {
    const {companyId} = props.match.params;
    Meteor.subscribe('company');
    return {project: Company.findOne(companyId)};
}, TaskList)

我把公司从道具上拉下来。我还从道具中提取了projectId,但是当我查询集合时,它只是返回未定义的。我已将GitHub repo发布为live here,非常感谢您的帮助。

您确实在服务器上订阅了“公司”出版物。 尽管该出版物并不存在

Meteor.publish('company', function (companyId) {
  const publications = [];
  publications.push(Company.find(
    {
      _id: companyId,
    },
  ));
  return publications;
});
这将从服务器发布所需的id。 那么来自客户端的订阅将是:

Meteor.subscribe('company', props.companyId);
如果您还有任何问题,请告诉我

如果可以的话,我也会给你一些建议。文档中包含文档对于出版物来说并不是很好。
我建议将项目和任务放入新的集合中,并且仅在选择项目后订阅任务。

您确实订阅了服务器上的“公司”出版物。 尽管该出版物并不存在

Meteor.publish('company', function (companyId) {
  const publications = [];
  publications.push(Company.find(
    {
      _id: companyId,
    },
  ));
  return publications;
});
这将从服务器发布所需的id。 那么来自客户端的订阅将是:

Meteor.subscribe('company', props.companyId);
如果您还有任何问题,请告诉我

如果可以的话,我也会给你一些建议。文档中包含文档对于出版物来说并不是很好。
我建议将项目和任务放入新集合中,并仅在选择项目后订阅任务。

你好,米奇,谢谢你-我尝试了你最初的方法,但似乎无法使其工作。至于你的建议,我想我会沿着这条路走下去,试着把我的一个大收藏分成三个独立的。不过,对于
transform
的文档,我还不能完全理解。你对这个话题有什么建议吗?我找到了这本教程,但它是针对Iron Router的,而不是React(但我想它是类似的),我无法帮助您进行转换和React连接。我们从来没有在我们的项目中使用它们,因为如果订阅的集合没有得到仔细的管理,并且只是使用所有这些属性,它们可能会导致巨大的性能下降。只是要小心你发布的转换。嗨,米奇,谢谢你-我已经尝试了你最初的方法,我似乎无法让它工作。至于你的建议,我想我会沿着这条路走下去,试着把我的一个大收藏分成三个独立的。不过,对于
transform
的文档,我还不能完全理解。你对这个话题有什么建议吗?我找到了这本教程,但它是针对Iron Router的,而不是React(但我想它是类似的),我无法帮助您进行转换和React连接。我们从来没有在我们的项目中使用它们,因为如果订阅的集合没有得到仔细的管理,并且只是使用所有这些属性,它们可能会导致巨大的性能下降。只需小心使用转换发布的内容即可。