我正在构建一个React-Meteor网络应用程序,我需要访问一个集合中的特定数据。
有三个主要组件,公司列表,项目列表和任务列表。当我列出所有公司时,我可以选择一个,然后显示与该公司相关的所有项目。我想要做的是点击一个项目,看看与该项目相关的所有任务。我的数据结构如下(如您所见,项目是一个对象数组):
{
"_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)
我把公司拉出道具。我也从道具中取消了projectId,但是当我查询该集合时,它只是返回undefined。我已经在这里发布了GitHub回购 - https://github.com/GlueDigiStu/ClientManager并希望得到任何帮助。
答案 0 :(得分:0)
您确实订阅了"公司"在服务器上发布。 虽然该出版物不存在。
Meteor.publish('company', function (companyId) {
const publications = [];
publications.push(Company.find(
{
_id: companyId,
},
));
return publications;
});
这将从服务器发布您想要的ID。 然后来自客户的订阅将是:
Meteor.subscribe('company', props.companyId);
如果您有任何其他问题,请与我们联系。
如果我可以,我也会给你一些建议。在文档中包含文档中的文档对于出版物来说并不是很好。 我建议将项目和任务放入新的集合中,只有在选择项目后才能订阅任务。