在流星中显示来自两个不同集合的元素

时间:2015-05-11 12:30:44

标签: meteor meteor-autoform

我有两个不同的流星集合,一个是存储图像的文件集合:

 Images = new FS.Collection("images", {
  stores: [new FS.Store.FileSystem("images", {path: "~/uploads"})]
});

和另一个用于存储有关这些图像的信息的集合:

Photos = new Mongo.Collection("photos");
Photos.attachSchema(new SimpleSchema({
  userId:{
    type: String,
    autoValue:function(){return this.userId},

  },
  userName:{
      type: String,
      autoValue:function(){return Meteor.users.findOne({_id: this.userId}).username},
  },

  groupMembers: {
    type: String
  },
  comments: {
    type: String,  
    autoform:{
        rows: 5
    }
  },
  fileId: {
    type: String
  }
}));

我构建了这个帮助函数来帮助显示模板上的数据:

Template.imagesSubmitted.helpers({
       photos: Photos.find(), 
       image: function(){Images.findOne({_id: Template.instance().data.image}).url();
        }
    });

Images.allow({
  download: function () {
    return true;
  },
  fetch: null
});

以下是显示照片图像和信息的HTML代码:

</template> 

<template name = "imagesSubmitted">
    List of photos
    {{#each photos}}
    <div class = "uploadedImage">  
      This is an image
      {{> photo}}
      <img src="{{this.image}}" class = "tableImage" alt="thumbnail">

    </div>    
    {{/each}}

</template>

不幸的是,该页面不显示任何数据库中的任何内容。图像仅显示为替换&#34;缩略图&#34;并且{{>photo}}似乎无法显示照片集中的任何信息。

有没有办法解决这个问题?还有一种简化方法,以便我只使用一个集合,仍然能够使用cfs:autoform来创建和发布收集图像的表单吗?

2 个答案:

答案 0 :(得分:1)

您是否尝试在浏览器控制台中使用该查询?像Photos.find()。fetch(); 你在定义照片模板吗?

答案 1 :(得分:1)

务必允许下载功能。
来自the docs

Images.allow({
    download: function(userId, fileObj) {
        return true
    }
})