Отображение элементов из двух разных коллекций в метеоре

У меня есть две разные коллекции метеоров, одна коллекция файлов для хранения изображений:

 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>

К сожалению, на странице ничего не отображается ни из одной базы данных. Изображения отображаются только как альтернативные «миниатюры», а {{>photo}}, похоже, не отображает никакой информации из коллекции фотографий.

Есть ли способ исправить это? Также есть ли способ упростить это, чтобы я использовал только одну коллекцию и по-прежнему мог использовать cfs: autoform для создания и публикации формы, которая собирает изображения?


person occam98    schedule 11.05.2015    source источник


Ответы (2)


Вы пытались использовать этот запрос в консоли браузера? Как Photos.find().fetch(); И вы определяете шаблон фотографии?

person peter pawar    schedule 11.05.2015
comment
Да, похоже, что объекты есть: Photos.find().fetch() [Объект, Объект, Объект, Объект, Объект, Объект] - person occam98; 11.05.2015
comment
А как насчет фотошаблона... определили ли вы его? - person peter pawar; 11.05.2015
comment
Нет, но когда я удаляю его, я все еще не вижу изображения, которые должен отображать элемент ‹img›. - person occam98; 11.05.2015

Обязательно разрешите функцию загрузки.
Из документов:

Images.allow({
    download: function(userId, fileObj) {
        return true
    }
})
person durrrr    schedule 11.05.2015
comment
Вот что у меня есть: Images.allow({ download: function () { return true; }, fetch: null }); - person occam98; 11.05.2015
comment
Я добавил параметры, которые вы предложили, и это не имело значения. - person occam98; 11.05.2015
comment
Хм. Убедитесь, что они опубликованы и подписаны, и проверьте путь. - person durrrr; 12.05.2015
comment
Также я заметил следующее: 1) вы рендерите шаблон {{> photo}} (которого не существует?) для каждого фотодокумента из коллекции. Это не может работать, если шаблон не существует. 2) <img src="{{this.image}}"> имеет размер фотодокумента из Photos коллекции, я полагаю. Итак, ожидается, что коллекция Photos будет иметь поле image..? - person durrrr; 12.05.2015