我正在寻找关于我的方法的建议 - 我想确保我以“流星方式”做事并保持代码快速。
现状:
我们有一个问题集。每个问题都有一个嵌套的Answers集合。通过REST API,设备可以中继用户选择的答案。
根据所选答案,我们会显示每个问题的图表 - 简单数字细分和百分比条。为了提高性能,我们一直在跟踪每个答案在答案本身上收到的答复数量。
该出版物(基本上)看起来像这样:
Meteor.publish('questionsBySiteID', function(site_id){
return Questions.find({site_id: site_id});
});
这样的路线:
Router.route('/sites/:_id/questions', {
name: 'questionsList',
waitOn: function(){
return [
Meteor.subscribe('questionsBySiteID', this.params._id),
];
},
data: function(){
return {
publishedQuestions: Questions.find(
{ site_id : this.params._id, active: true, deleted: {$ne: true} },
{ sort : { order: 1} }
),
archivedQuestions : Questions.find(
{ site_id : this.params._id, active: false, deleted: {$ne: true} },
{ sort : { updated_at: -1 } }
),
deletedQuestions : Questions.find(
{ site_id : this.params._id, deleted: true },
{ sort : { updated_at: -1 } }
)
};
}
});
需要更改:
现在我们希望回复可以过滤日期。这意味着我们在Answers上跟踪的非规范化响应计数不是很有用。我们一直在跟踪另一个集合(响应),其中包含更多“原始”版本的数据。 Response对象跟踪模块(在这种情况下为questions
),question_id,answer_id,timestamp,问题所属客户的id等。
问题:
这是模板订阅有用的东西吗?也许我们需要一个接受过滤器的question_id和可选的开始/结束日期的出版物。每个问题的统计模板将在Template.question.create()
中订阅适用的响应数据。根据question_id,出版物需要在日期过滤器中找到相关答案的回复。也许我们使用the publish-counts package来计算每个答案的选择次数并公布这些计数。
Responses集合会非常大,所以我试着要小心我在这里发布的内容。我不希望waitOn
所有回复都要发布。