У меня есть две разные коллекции метеоров, одна коллекция файлов для хранения изображений:
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 для создания и публикации формы, которая собирает изображения?