我的路线上的订阅方法有什么问题?

时间:2014-12-17 13:00:24

标签: meteor iron-router

有人可以看到为什么路线没有订阅该出版物。 Profiles = new Meteor.Collection('profiles');

mongo数据库确实包含此集合中的文档,但浏览器控制台在“个人档案”集合中的计数仍为0。

我试图告诉路由器,“订阅用户配置文件发布,当你准备好时,渲染'配置文件'模板。我也命名了路由'配置文件'。

现在我注意到在输入sub = Meteor.subscribe('user-profile');然后sub.ready();后,我得到了收集的计数。否则,路径未订阅。之前没有发生过此行为。

LIB / router.js

Router.plugin('loading', {loadingTemplate: 'Loading'});

Router.route('user/profile', {
name: 'profile',
waitOn: function () {
 // return one handle, a function, or an array
 return Meteor.subscribe('user-profile');
 },

action: function () {
 // this.ready() is true if all items returned from waitOn are ready
 if (this.ready())
 this.render('profile');
 else
 this.render('Loading');
}
});

server.js:

Meteor.publish('user-profile', function () { 
return Profiles.find({userId: this.userId});
});

userId是“个人档案”集合中的一个字段。此配置文件doc id存储在user.profile.experiences数组中以供参考。

1 个答案:

答案 0 :(得分:1)

Meteor.userId是一个函数,它返回_id,而不是_id本身,并且无论如何都无法通过DDP传递函数。它应该是:

waitOn: function () {
  return Meteor.subscribe('user-profile', Meteor.userId());
}