如何在Spacebars #each Tag中显示来自两个不同Collection文档的数据?

时间:2015-04-18 16:58:08

标签: javascript meteor spacebars meteor-collections

我有2个集合(其中一个是标准集合,另一个是用于存储我上传图像的CFS集合):

Products = new Mongo.Collection('products');

Uploads = new FS.Collection('uploads', {
  stores: [new FS.Store.FileSystem('uploads', {path: '~/projectUploads'})]

});

Products集合中的某些文档具有' product_main_image'的字段或键/值对。它存储上传CFS集合中存储的上传文件的文件名。

在我的页面上,我设置了一个帮手:

Template.admin_products.helpers({

  products: function(){
    console.log('inside helperproduct');

    return Products.find();
  }

});

在html中我有:

{{#each products}}
    {{product_name}}
    {{product_main_image}}
  {{/each}}

但是我没有显示{{product_main_image}}显示的实际文件名,而是显示上传的文件,就像我使用此代码访问它一样:

Uploads.findOne({"original.name":product_main_image});

此页面是我使用{{#each products}}显示所有产品的地方,我还想显示存储在上传CFS集合中的每个产品的图像。

这可能吗? 我怎么能实现这个目标? 谢谢......

1 个答案:

答案 0 :(得分:2)

这可能吗?的

我怎么能实现这个目标?

您可以使用this的上下文。在Uploads.findOne()

这就是 HTML 的外观。

{{#each products}}
   {{product_name}}
   {{product_main_image}}
    {{#with image}}
      <img src="{{this.url}}" />
    {{/with}}
 {{/each}}

图片助手。

Template.example.helpers({
  image:function(){
    Uploads.findOne({"original.name":this.product_main_image});
   }
})

这是一个快速的MeteorPad,显示你如何实现这个目标(我使用2个虚拟集合,但想法是一样的)