Javascript 流星铁路由器WaitOn订阅
在将Javascript 流星铁路由器WaitOn订阅,javascript,meteor,iron-router,Javascript,Meteor,Iron Router,在将数据返回到模板之前,我真的很难等待订阅加载特定路由。我可以从服务器上的发布中看到找到了文档,但在客户端上没有文档 如果我对发布进行find().count(),它将显示找到的1个文档,这是正确的,但当我对订阅进行计数时,它将显示0个文档 我尝试了许多不同的方法,比如使用subscriptions:function()而不是waitOn:function(),但都不起作用 Collections.js lib: SinglePackage = new Mongo.Collection("Sin
数据
返回到模板之前,我真的很难等待订阅加载特定路由。我可以从服务器上的发布中看到找到了文档,但在客户端上没有文档
如果我对发布进行find().count(),它将显示找到的1个文档,这是正确的,但当我对订阅进行计数时,它将显示0个文档
我尝试了许多不同的方法,比如使用subscriptions:function()而不是waitOn:function(),但都不起作用
Collections.js lib:
SinglePackage = new Mongo.Collection("SinglePackage");
SinglePackage.allow({
insert: function(){
return true;
},
update: function(){
return true;
},
remove: function(){
return true;
}
});
Publications.js服务器:
Meteor.publish("SinglePackage", function(pack_id) {
return Packages.find({shortId: pack_id});
});
铁制路由器:
Router.route('/package/:id', {
name: 'package.show',
template: 'Package_page',
layoutTemplate: 'Landing_layout',
waitOn: function() {
return Meteor.subscribe('SinglePackage', this.params.id);
},
data: function() {
return SinglePackage.find();
},
action: function () {
if (this.ready()) {
this.render();
} else {
this.render('Loading');
}
}
});
我是做错了什么,还是这只是一件复杂的事情?人们可能会认为waitOn会让函数的其余部分等待,直到订阅就绪
非常感谢您的帮助。在订阅准备就绪之前,
数据功能似乎正在运行。即使data
函数在订阅准备就绪后运行,它也不会是一个使发布/订阅变得毫无意义的被动数据源
参考订阅的示例,您可以执行以下操作:
Router.route('/package/:id', {
subscriptions: function() {
// returning a subscription handle or an array of subscription handles
// adds them to the wait list.
return Meteor.subscribe('SinglePackage', this.params.id);
},
action: function () {
if (this.ready()) {
this.render();
} else {
this.render('Loading');
}
}
});
然后在template.js中:
Template.Package_page.helpers({
singlePackage() {
// This is now a reactive data source and will automatically update whenever SinglePackage changes in Mongo.
return Package.find().fetch();
}
});
在template.html中,您现在可以使用singlePackage
:
<template name="Package_page">
{#with singlePackage} <!-- Use #each if you're singlePackage is an array -->
ID: {_id}
{/with}
</template>
{#带单包}
ID:{u ID}
{/与}
感谢杰里米的帮助。我已经试过了,但可惜它仍然不起作用。如果我在模板级别进行计数,我仍然会返回0个结果在工作流中的哪个点进行计数?OnCreate、onRendered、helper?helper。。那是错的地方吗?这真的很奇怪,我可以在发布中看到文档,但在订阅中看不到。我看到您的集合被定义为new Mongo.collection(“SinglePackage”)
在您的collection.js中。然后,publication.js有查询Packages.find({shortId:pack\u id})代码>。在MongoDB中,您的集合名为SinglePackage
或Packages
。因此,我有一个名为Packages的集合,其中包含数千个文档。然后我想要一种一次只调用一个文档的方法,这就是我上面所做的。这样做不对吗?