【问题标题】:Meteor React Subscribe to specific collection dataMeteor React 订阅特定的采集数据
【发布时间】:2017-05-08 17:10:01
【问题描述】:

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

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

{
    "_id" : "aQnrkqMi6ugEvav4a",
    "owner" : "7Gp49ZCtGC9oEx3jN",
    "createdAt" : ISODate("2017-05-08T15:52:27.777Z"),
    "data" : {
        "name" : "lkhgb",
        "contacts" : [ 
            {
            ...
            }
        ],
        "projects" : [ 
            {
                ...
            }, 
            {
                "name" : "ljhvljhvblhkjvblhkj",
                "id" : "258757206",
                "tasks" : [ 
                    "task1", 
                    "task2"
                ]
            }
        ]
    }
}

在我的 TaskList 组件中,我将其导出如下:

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

我从道具中提取 companyId 的地方。我还从道具中提取了 projectId,但是当我查询集合时,它只是返回未定义。我已在此处发布了 GitHub 存储库 - https://github.com/GlueDigiStu/ClientManager,希望能提供任何帮助。

【问题讨论】:

    标签: javascript reactjs meteor


    【解决方案1】:

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

    Meteor.publish('company', function (companyId) {
      const publications = [];
      publications.push(Company.find(
        {
          _id: companyId,
        },
      ));
      return publications;
    });
    

    这将从服务器发布您想要的 id。 那么来自客户端的订阅将是:

    Meteor.subscribe('company', props.companyId);
    

    如果您还有其他问题,请告诉我。

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

    【讨论】:

    • 嗨,Mitch,谢谢您 - 我已经尝试了您的初始方法,但似乎无法正常工作。至于你的建议,我想我会沿着这条路走,并尝试将我的一个大收藏分成三个独立的。不过,我无法完全理解transform 的文档。你对这个话题有什么建议吗?我找到了这个教程,但它适用于 Iron Router,而不是 React(但我想它是相似的)meteor.hromnik.com/blog/joins-in-meteorjs-and-mongodb
    • 我无法帮助您进行转换和反应连接。我们从来没有在我们的项目中使用它们,因为如果订阅的集合没有得到仔细的管理并且只是吐出所有属性,它们会导致性能大幅下降。请注意使用转换发布的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多