我一直在阅读流星文档,但目前我正面临以下问题。
代码块1
Router.map(function() {
this.route('quizzes', {
path: '/quizzes',
waitOn: function() {
return Meteor.subscribe('quizzes');
}
});
})
我只需使用Meteor.quizzes.find()
即可从模板中看到上述集合代码区块2
服务器端代码
// Declare server Movies collection
Movies = new Meteor.Collection("movies");
// Seed the movie database with a few movies
Meteor.startup(function () {
if (Movies.find().count() == 0) {
Movies.insert({ title: "Star Wars", director: "Lucas" });
Movies.insert({ title: "Memento", director: "Nolan" });
Movies.insert({ title: "King Kong", director: "Jackson" });
}
console.log(Meteor.movies.find().count()) //retunr 3 records
Meteor.publish('movies', function(){
return Movies.find({});
})
路由代码如下
Router.map(function() {
//Admin routes
this.route('userManagement', {
path: '/user-management',
waitOn: function() {
return Meteor.subscribe('users');
}
});
});
when I use the users in the above block of code, It working fine.
but when i use movies/quizzes on same route map .
Router.map(function() {
//Admin routes
this.route('moviesManagement', {
path: '/movies-management',
waitOn: function() {
return Meteor.subscribe('movies');
}
});
});
但是当我尝试访问Meteor.movies.find()时,没有任何事情发生,我认为订阅方法也没有返回任何内容。
我花了很多时间修理,但我找不到soltioon。请帮帮我。
答案 0 :(得分:0)
您需要订阅movies
出版物,方法是使用Iron Router的waitOn
或subscriptions
选项,或者自行调用订阅。请注意,在测验代码中,您在运行路线之前正在等待测验订阅。
手动调用订阅:
// on client
Meteor.subscribe('movies', function() {
console.log(Movies.find().count()); // 3
});
使用Iron Router处理您的订阅:
// on client
Router.route('/movies', {
waitOn: function() { return Meteor.subscribe('movies'); }
});
顺便说一句,您使用的是旧的传统Iron Router API。我建议查看official Iron Router guide。