我无法正确发布,订阅和显示产品详细信息页面。我有一个名为productCode的属性的产品集合。这是我的产品系列:
Products = new Mongo.Collection('products');
这是我的publish.js:
Meteor.publish('tireDetails'), function(_id) {
return {
products: Products.findOne({_id: this.params._id})
};
};
这是我的控制器:
tireDetailsController = RouteController.extend({
waitOn: function () {
Meteor.subscribe('tireDetails');
},
action: function() {
this.render('tireDetails');
}
});
我的router.js:
Router.route('/products/tires/:_id', {name: 'tireDetails', controller: 'tireDetailsController'});
这是我的模板:
<template name="tireDetails">
{{#with products}}
<p>{{productCode}}</p>
{{/with}}
</template>
我认为我发布产品的方式是错误的。此外,我输入了浏览器控制台:
Products.findOne();
哪个返回undefined ...请帮助!!
谢谢!
答案 0 :(得分:1)
发布者需要返回游标或游标数组。 findOne
返回一份文件。此外,您的发布商无权访问this.params._id
。尝试这样的事情:
Meteor.publish('tireDetails', function(id) {
return Products.find(id);
});
并且您的waitOn
应如下所示:
waitOn: function() {
Meteor.subscribe('tireDetails', this.params._id);
}
为了让product
呈现给您的模板,您可以向控制器添加data参数:
data: function() {
return {product: Products.findOne(this.params._id})};
}
然后在你的模板中:
<template name="tireDetails">
<p>{{product.productCode}}</p>
</template>