【发布时间】:2016-05-22 13:46:12
【问题描述】:
我正在使用流星,这是我的架构,每个都是一个单独的集合:
课程有很多讲座
讲座有很多问题
问题有很多答案
我想要 1 个页面,我可以在其中显示给定课程的讲座、问题和答案。我可以毫无问题地显示课程的讲座,但我在显示更多嵌套项目时遇到了问题。理想情况下,我希望拥有:
Lecture 有 courseId
Answer 有 LectureId(但没有 courseId)
问题有 answerId(但没有 LectureId 或 courseId)
这是明智的还是我应该在所有子组件中嵌入 courseIds 和 LectureIds?这是我的铁路由器,我试图扩展与嵌套讲座相同的想法,但我遇到了如何为订阅提供 LecturesId 的绊脚石:
Router.route('/courses/:_id', {
name: 'CoursePage',
waitOn: function(){
return [
Meteor.subscribe('singleCourse', this.params._id),
Meteor.subscribe('lectures', this.params._id),
Meteor.subscribe('questions', this.params._id)
];
},
data: function() {
return Courses.findOne(this.params._id);
}
});
这是课程页面的订阅,同样是我不知道如何输入 LectureId 的绊脚石:
Template.CoursePage.helpers({
Lectures: function() {
return Lectures.find({courseId: this._id});
},
Questions: function(lectureId) {
return Questions.find({courseId: this._id, lectureId: lectureId});
}
});
任何人都可以推荐一种为单个页面执行此 4 级嵌套的好方法吗?我认为我遗漏了一些明显的东西,但我无法通过谷歌搜索找到一个很好的例子。
谢谢!
【问题讨论】:
-
使用
smart-publish包怎么样?它可以帮助连接。
标签: meteor meteor-blaze