我尝试在每个用户拥有的以下数组中发布由用户名创建的帖子。我将此添加到microscope practice app错误是I20140826-20:31:53.452(-4)?在Meteor.publish.Comments.find.postId [as _handler](app / server / publications.js:2:13)。在这里感谢先进的代码。
publications.js 循环应该发布由以下数组中的每个用户名发布的帖子。
Meteor.publish('posts', function(options) {
for (u=0;u<this.user.profile.following.length;u++) {
f=profile.following[u].text();
return Posts.find({username:f}, options);
}
});
它会影响的路线
控制器
PostsListController = RouteController.extend({
template: 'postsList',
increment: 5,
limit: function() {
return parseInt(this.params.postsLimit) || this.increment;
},
findOptions: function() {
return {sort: this.sort, limit: this.limit()};
},
waitOn: function() {
return Meteor.subscribe('posts', this.findOptions());
},
posts: function() {
return Posts.find({}, this.findOptions());
},
data: function() {
var hasMore = this.posts().count() === this.limit();
return {
posts: this.posts(),
nextPath: hasMore ? this.nextPath() : null
};
}
});
NewPostsListController = PostsListController.extend({
sort: {submitted: -1, _id: -1},
nextPath: function() {
return Router.routes.newPosts.path({postsLimit: this.limit() + this.increment})
}
});
BestPostsListController = PostsListController.extend({
sort: {votes: -1, submitted: -1, _id: -1},
nextPath: function() {
return Router.routes.bestPosts.path({postsLimit: this.limit() + this.increment})
}
});
路由器地图
this.route('newPosts', {
path: '/new/:postsLimit?',
controller: NewPostsListController
});
this.route('bestPosts', {
path: '/best/:postsLimit?',
controller: BestPostsListController
});
答案 0 :(得分:0)
您的发布功能有误,您是否知道您的循环没用,因为它在遇到第一次返回时退出了?
即使您聚合循环中累积的游标,这也不会起作用,因为目前发布函数只能从DIFFERENT集合中返回多个游标。
你需要在这里使用适当的mongo选择器,这可能是$in
。
此外,profile.following
甚至没有在发布函数中定义,并且通过根据数组长度(profile.following.length
)检查迭代器变量来完成对数组的迭代,或者更好地使用{{1 }或Array.prototype.forEach
。
我认为这是你正在尝试做的事情:
_.each
如果您正在阅读Meteor.publish("posts",function(options){
if(!this.userId){
this.ready();
return;
}
var currentUser=Meteor.users.findOne(this.userId);
return Posts.find({
username:{
$in:currentUser.profile.following
}
},options);
});
本书,我认为他们为初学者提供了一些优秀的JS教程,那么在继续在Meteor中进一步挖掘之前,你一定应该阅读有关JavaScript本身的资源。