我正在尝试创建像twitter这样的关注者系统,我想只为以下用户显示帖子。 我不确定我的发布代码。
我有两个系列:
1- Posts {
"_id": "3HrXtbHZ8WqHJJpyC",
"post": " some text",
"owner": "Wdc84ED9zt4Ssxsh4",
"username": "MJK",
"createdAt": "2016-01-28T11:53:33.253Z"
}
2- Follwers {
"_id": "ShKWgeaP9BFPuQWwL",
"follower": "MJK",
"following": "michael"
}
发布代码
Meteor.publish('posts', function() {
var user = Meteor.users.findOne({_id: this.userId}).username;
var follower = Followers.find({followers: user}).following;
var posts = Posts.find({username: {$in: follower}});
return posts;
});
订阅
Meteor.subscribe('posts');
客户代码
Template.content.helpers({
'posts': function(){
return Posts.find({}, {sort:{createdAt: -1}});
}
});
HTML
{{#each posts}}
<li class="collection-item avatar">
<span class="title"><a href="/{{username}}">{{posts.username}}</a></span>
<p>{{time}}
{{post}}
{{/each}}
但浏览器中没有帖子。 我认为我的发布代码是错误的。有人可以帮帮我吗?
答案 0 :(得分:2)
将您的关注行更改为:
var follower = Followers.find({follower: user}).fetch().map(function(follower) {
return follower.following;
});
我所做的改变:
followers: user
更改为follower:user
,因为我在“关注者”集合中找不到关注者属性。fetch()
查询后添加find()
以返回数组而不是游标。.map()
将您的对象数组转换为用户名字符串数组,以便提供给帖子。