如何在模板视图中显示 children 共 "publish-composite collection"
How to display children of "publish-composite collection" on Template View
考虑 https://github.com/englue/meteor-publish-composite
中给出的示例
如何在模板视图上显示嵌套 children。我的意思是,在视图的 post 上显示 前 2 条评论。
我在互联网上搜索了很多关于模板视图上显示的 children 树的信息,但没有找到。
代码
publishComposite('topTenPosts', {
find() {
// Find top ten highest scoring posts
return Posts.find({}, { sort: { score: -1 }, limit: 10 });
},
children: [
{
find(post) {
// Find post author. Even though we only want to return
// one record here, we use "find" instead of "findOne"
// since this function should return a cursor.
return Meteor.users.find(
{ _id: post.authorId },
{ fields: { profile: 1 } });
}
},
{
find(post) {
// Find top two comments on post
return Comments.find(
{ postId: post._id },
{ sort: { score: -1 }, limit: 2 });
},
children: [
{
find(comment, post) {
// Find user that authored comment.
return Meteor.users.find(
{ _id: comment.authorId },
{ fields: { profile: 1 } });
}
}
]
}
]
});
使用 Blaze,它应该只是一组简单的模板,您可以在其中搜索助手中的相关评论和作者,并使用嵌套 {{#each}}
循环显示帖子和评论。
html:
<template name="posts">
{{#each posts}}
Title: {{title}} posted on: {{date}} by: {{authorName}}
{{#each comments}}
{{> comment}}
{{/each}}
{{/each}}
</template>
<template name="comment">
Post comment {{body}} by {{authorName}} on {{createdAt}}
</template>
现在请来帮手:
Template.posts.helpers({
posts(){
return Posts.find({}, { sort: { score: -1 }, limit: 10 });
},
comments(){
return Comments.find({ postId: this._id },{ sort: { score: -1 }, limit: 2 });
},
authorName(){
return Meteor.users.findOne(this.authorId).username;
});
Template.comment.helpers({
authorName(){
return Meteor.users.findOne(this.authorId).username;
},
});
请注意这些助手中 this
的使用。 this
将是评估时数据 context 的值。在 {{#each}}
块中 this
采用当前文档的值,即带有键的对象。
如果愿意,您可以通过创建 全局助手 来保持 authorName
助手干爽。
考虑 https://github.com/englue/meteor-publish-composite
中给出的示例如何在模板视图上显示嵌套 children。我的意思是,在视图的 post 上显示 前 2 条评论。
我在互联网上搜索了很多关于模板视图上显示的 children 树的信息,但没有找到。
代码
publishComposite('topTenPosts', {
find() {
// Find top ten highest scoring posts
return Posts.find({}, { sort: { score: -1 }, limit: 10 });
},
children: [
{
find(post) {
// Find post author. Even though we only want to return
// one record here, we use "find" instead of "findOne"
// since this function should return a cursor.
return Meteor.users.find(
{ _id: post.authorId },
{ fields: { profile: 1 } });
}
},
{
find(post) {
// Find top two comments on post
return Comments.find(
{ postId: post._id },
{ sort: { score: -1 }, limit: 2 });
},
children: [
{
find(comment, post) {
// Find user that authored comment.
return Meteor.users.find(
{ _id: comment.authorId },
{ fields: { profile: 1 } });
}
}
]
}
]
});
使用 Blaze,它应该只是一组简单的模板,您可以在其中搜索助手中的相关评论和作者,并使用嵌套 {{#each}}
循环显示帖子和评论。
html:
<template name="posts">
{{#each posts}}
Title: {{title}} posted on: {{date}} by: {{authorName}}
{{#each comments}}
{{> comment}}
{{/each}}
{{/each}}
</template>
<template name="comment">
Post comment {{body}} by {{authorName}} on {{createdAt}}
</template>
现在请来帮手:
Template.posts.helpers({
posts(){
return Posts.find({}, { sort: { score: -1 }, limit: 10 });
},
comments(){
return Comments.find({ postId: this._id },{ sort: { score: -1 }, limit: 2 });
},
authorName(){
return Meteor.users.findOne(this.authorId).username;
});
Template.comment.helpers({
authorName(){
return Meteor.users.findOne(this.authorId).username;
},
});
请注意这些助手中 this
的使用。 this
将是评估时数据 context 的值。在 {{#each}}
块中 this
采用当前文档的值,即带有键的对象。
如果愿意,您可以通过创建 全局助手 来保持 authorName
助手干爽。