使用每个块显示来自两个 collections 的数据
Displaying data from two collections using each block
所以我有2个collection如下
Collection 用户,文档可能如下所示
{_"id":"xyz",
"name":"sam"
}
Collection 项,多于一个文档链接到用户 collection 如下
{_"id":"123345",
"userid":"xyz"
"item":"potato"
}
{_"id":"3456",
"userid":"xyz"
"item":"tomato"
}
现在假设我正在 运行 查询以显示名称为 sam 的所有文档,如下所示,(将 运行 作为助手)
return User.find({name:"sam"});
然后我将记录传递到 blaze 模板并使用 {{#each}} 显示值。
现在,我还想显示来自 collection "items" 和 collection "users" 的数据。所以我在 html 使用 {{#each}} 后的数据可能看起来像这样
<li> sam ...potato, tomato </li>
<li> sam ...potato, tomato, orange </li>
<li> sam ...pineapple </li>
<li> sam ... </li>
即数据显示在模板上使用#each 但来自 2 个不同的 collections。
谁能告诉我模板中的代码应该是什么样子的?
您可以在发布用户信息时使用 publish-composite package。 (参见 link 中的示例 1)
所以对于您的用例,类似的东西应该可以工作:
Meteor.publishComposite('userItems', {
find: function() {
return Users.find({
name: "sam"
},
{
sort: {
...
},
fields: {
...
}
});
},
children: [{
find: function(user) {
return Items.find({
userid: user._id
}, {
fields: {
"item": true,
...
}
});
}}]
});
这里的解决方法是传递一个参数给helper。在这里它应该发生一点点棘手:
1)知道如何传递参数:
让我们为辅助产品命名
HTML
{{products paramA}}
JS
products: function(userId){
findOne({userId:userId})
}
2)完美,但是如何通过_id
:
当您使用 each
调用用户助手时,您可以通过 {{_id}}
访问,因此应该可以传递它。
如果这不知何故不起作用。再次尝试使用 each
。尝试通过 this._id
.
访问产品助手中的元素
希望以上两种方式能够解决你的问题
所以我有2个collection如下 Collection 用户,文档可能如下所示
{_"id":"xyz",
"name":"sam"
}
Collection 项,多于一个文档链接到用户 collection 如下
{_"id":"123345",
"userid":"xyz"
"item":"potato"
}
{_"id":"3456",
"userid":"xyz"
"item":"tomato"
}
现在假设我正在 运行 查询以显示名称为 sam 的所有文档,如下所示,(将 运行 作为助手)
return User.find({name:"sam"});
然后我将记录传递到 blaze 模板并使用 {{#each}} 显示值。
现在,我还想显示来自 collection "items" 和 collection "users" 的数据。所以我在 html 使用 {{#each}} 后的数据可能看起来像这样
<li> sam ...potato, tomato </li>
<li> sam ...potato, tomato, orange </li>
<li> sam ...pineapple </li>
<li> sam ... </li>
即数据显示在模板上使用#each 但来自 2 个不同的 collections。
谁能告诉我模板中的代码应该是什么样子的?
您可以在发布用户信息时使用 publish-composite package。 (参见 link 中的示例 1)
所以对于您的用例,类似的东西应该可以工作:
Meteor.publishComposite('userItems', {
find: function() {
return Users.find({
name: "sam"
},
{
sort: {
...
},
fields: {
...
}
});
},
children: [{
find: function(user) {
return Items.find({
userid: user._id
}, {
fields: {
"item": true,
...
}
});
}}]
});
这里的解决方法是传递一个参数给helper。在这里它应该发生一点点棘手:
1)知道如何传递参数:
让我们为辅助产品命名
HTML
{{products paramA}}
JS
products: function(userId){
findOne({userId:userId})
}
2)完美,但是如何通过_id
:
当您使用 each
调用用户助手时,您可以通过 {{_id}}
访问,因此应该可以传递它。
如果这不知何故不起作用。再次尝试使用 each
。尝试通过 this._id
.
希望以上两种方式能够解决你的问题