【发布时间】:2016-07-17 17:55:39
【问题描述】:
我汇总了一些数据并将其发布,但我不确定如何/在何处访问订阅的数据。我能否访问 WeeklyOrders 客户端集合(定义为仅限客户端的集合,即 WeeklyOrders = new Mongo.Collection(null);)?
另外,我看到“self = this;”在网上的几个例子中使用,我只是在这里使用它,但不知道为什么。感谢任何解释这一点的人。
这里是发布方法:
Meteor.publish('customerOrdersByWeek', function(customerId) {
check(customerId, String);
var self = this;
var pipeline = [
{ $match: {customer_id: customerId} },
{ $group: {
_id : { week: { $week: "$_created_at" }, year: { $year: "$_created_at" } },
weekly_order_value: { $sum: "$order_value" }
}
},
{ $project: { week: "$_id.week", year: "$_id:year" } },
{ $limit: 2 }
];
var result = Orders.aggregate(pipeline);
result.forEach(function(wo) {
self.added('WeeklyOrders', objectToHash(wo._id), {year: wo.year, week: wo.week, order_value: wo.weekly_order_value});
});
self.ready();
});
路线如下:
Router.route('/customers/:_id', {
name: 'customerOrdersByWeek',
waitOn: function() {
return [
Meteor.subscribe('customerOrdersByWeek', this.params._id)
];
},
data: function() { return Customers.findOne(this.params._id); }
});
这是我的模板助手:
Template.customerOrdersByWeek.helpers({
ordersByWeek: function() {
return WeeklyOrders.find({});
}
});
【问题讨论】:
标签: javascript mongodb meteor iron-router meteor-helper