如何访问Meteor模板助手中的FlowRouter订阅?
似乎我无法在助手中访问FlowRouter模板订阅。你怎么能这样做?如何访问Meteor模板助手中的FlowRouter订阅?
在我的服务器代码:
Meteor.publish('AllUsers', function() {
return Meteor.users.find({}, {fields: {profile: 1}});
})
在我的路由器代码:
var userRoutes = FlowRouter.group({
subscriptions: function(params, queryParams) {
this.register('AllUsers', Meteor.subscribe('AllUsers'));
},
});
在我的模板代码:
{{#if checkFlowRouterSubs}}
{{#each getTheUsers}}
{{>userPartial}}
{{/each}}
{{/if}}
在我的助手我有 '守卫':
checkFlowRouterSubs: function() {
if (FlowRouter.subsReady()) {
return true;
};
return false;
},
然后是getTheUsers帮手:
...
var users = AllUsers.find(filterObject, { sort: { 'profile.firstname': 1 } }).fetch(); // the actual query definitely works
...
但我得到一个错误:
Exception in template helper: ReferenceError: AllUsers is not defined
我要指出的是,在getTheUsers帮手,FlowRouter.subsReady('AllUsers')
返回true
所以,第一,这:
var userRoutes = FlowRouter.group({
subscriptions: function(params, queryParams) {
this.register('AllUsers', Meteor.subscribe('AllUsers'));
},
});
不是ser版本代码:它是客户端代码:流量路由器是客户端路由器:计数器直观,但这是所有这些路由器的基础。 这里的提示是你在'订阅'这个代码的出版物,所以它在客户端。
铁路由器在服务器和客户端都是路由选择,所以当你从那里进入时,它会变得更加混乱。
这里缺少的是服务器端的publish
函数。
Meteor.publish('AllUsers', function() {
return AllUsers.find();
});
编辑:
的错误
Exception in template helper: ReferenceError: AllUsers is not defined
好像因为你当你试图从数据并没有规定在客户端
var AllUsers = Mongo.Collection('AllUsers'); //or whatever the actual collection
集合一个订阅,你想调用你想要获取数据的实际集合,而不是th e订阅名称。在这种情况下,我认为你的意思是流星。用户:
var users = Meteor.users.find(filterObject, { sort: { 'profile.firstname': 1 } });
if(users) {
return users.fetch();
}
谢谢。当我在帮手中这样做时,我有时会得到一个未定义的错误,即使使用警卫 –
当然,我会修改代码。 –
感谢您的回复。抱歉,这个错误 - 我确实在我的服务器代码中有。我已经修改了问题 –
好像你的收藏没有在客户端定义。 – MrE
谢谢你可能是这个原因。我想你仍然需要在本地存储在客户端发布收集 –