我能够显示特定用户的帖子列表,但无法显示包含特定用户评论的帖子。
官方链接中的示例使用此层次结构 here
对于我的问题,层次结构是:
all posts ->
(children)
-> find all post by user
-> find all comment by user
(children)
-> find post that has id that matches comments
到目前为止我所拥有的......
发布复合线
Meteor.publishComposite('user', function(_id) {
return {
find: function() {
return Meteor.users.find({_id: _id}, { fields: { profile: 1, username: 1} });
},
children: [
{
find: function(user) { return Posts.find({ userId: user._id }); }
},
{
find: function(user) { return Comments.find({ _id: user._id }); }
children: [
{
find: function(comment) { return Posts.find({ _id: comment.postId }); }
}
]
}
]
};
});
在模板中
Template.usersShow.helpers({
user: function () {
return Meteor.users.findOne({ _id: Router.current().params._id });
}
});
在路由器中
Router.route('/users/:_id', { name: 'users.show',
waitOn:function(){
// console.log(this.params._id);
return Meteor.subscribe('user', this.params._id);
}
});
html
{{#with user}}
<div class>{{ profile.name }}</div> <!-- name appears -->
{{#ionList}}
{{#each post}}
{{> postItem}}
{{/each}}
{{/ionList}}
{{/with}}
答案 0 :(得分:1)
我第一眼看到的是:
pullData
,user
出版物可以完成您在1)中提到的工作。posts
的{{1}}和comments
: user
只需使用children: [
{
find: function(user) { return Posts.find({ authorId: user._id }); }
},
{
find: function(user) { return Comments.find({ authorId: user._id }); }
}
]
和authorId
计划中的相应字段名称替换Post
。
我发现了Comment
在Meteor中发布联接的出色解决方案。
Join in Meteor with publishComposite
希望这有帮助,
亚历
P.S。我重新阅读了您编辑过的问题,并建议您:
publishComposite
,AllPosts
MyPosts
,TopTenPosts
,PostsByUser
,PostWithComments
等。