无法在 CollectionFS 中为 MeteorJS 应用操作 Images.find()
Couldn't manipulate Images.find() in CollectionFS for MeteorJS app
我的应用有点像 TelescopeJS,但更简单。我试图回应已添加到 post 添加表单中的特定图像,该表单需要输入 post 的名称、图片、类别和描述。它有 2 个集合,一个用于文章,另一个用于图像(不是 mongo 集合,它是一个 FS 集合。)文章集合存储名称、描述和类别名称,另一个存储图像。 **我的问题是:** 在 FS 集合文档中,循环
{{#each images}}
<img src="{{this.url}}" alt="" class="thumbnail" />
{{/each}}
其中图片:returns Images.find({}) 我的文章代码是:
{{#each articles}}
<li style="margin-right: 1%;">{{>article}}</li>
{{/each}}
其中文章:returns Articles.find({})
我的文章模板有图像循环,这会导致集合中的所有图像显示在一个 post 中。我只想为特定 post 显示特定图像。
这些是事件:
'change .img': function(event, template) {
FS.Utility.eachFile(event, function(file) {
Images.insert(file, function (err, fileObj) {
//Inserted new doc with ID fileObj._id, and kicked off the data upload using HTTP
});
});
},
'click .save':function(evt,tmpl){
var description = tmpl.find('.description').value;
var name = tmpl.find('.name').value;
var date=new Date();
var cat = tmpl.find('.selectCat').value;
Articles.insert({
description:description,
name:name,
time:date.toLocaleDateString()+' at '+date.toLocaleTimeString(),
author:Meteor.userId(),
userEmail:Meteor.user().username,
category:cat,
});
}
<template name="article">
{{#each images}}
<img src="{{this.url}}" alt="" class="thumbnail" />
{{/each}}
Here goes the {{name_of_post}}
Here {{the_category}}
Here {{the_description}}
</template>
所以发生的事情是,到目前为止我上传的所有图片都显示在一个 post 中并且所有 post 的图片看起来都一样。请帮忙!
你应该知道 fsFile support Metadata 所以也许你不需要 Articles Collection
所以我们可以制作一个新的eventHandler
。
'click .save':function(evt,tmpl){
var description = tmpl.find('.description').value,
file = $('#uploadImagePost').get(0).files[0], //here we store the current file on the <input type="file">
name = tmpl.find('.name').value,
date=new Date(),
cat = tmpl.find('.selectCat').value,
fsFile = new FS.File(file); // we create an FS.File instance based on our file
fsFile.metadata = { //this is how we add Metadata aka Text to our files
description:description,
name:name,
time:date.toLocaleDateString()+' at '+date.toLocaleTimeString(),
author:Meteor.userId(),
userEmail:Meteor.user().username,
category:cat,
}
Images.insert(fsFile,function(err,result){
if(!err){
console.log(result) // here you should see the new fsFile instance
}
});
}
这就是我们的新活动的外观,现在我们的 .save
按钮将所有内容插入同一个集合。
这就是我们如何使用关键字 'metadata.fieldName'
.
访问 FS.File
实例字段
例如。
Teamplate.name.helpers({
showCategory:function(){
// var category = Session.get('currentCategory') you can pass whatever data
// you want here from a select on the html or whatever.
//lets say our var its equal to 'Music'
return Images.find({'metadata.category':category});
}
})
现在我们像任何普通集合一样在 html
上使用该助手
<template name="example">
{{#each showCategory}}
Hi my category is {{metadata.category}} <!-- we access the metadata fields like any normal field on other collection just remember to use the 'metadata'keyword -->
This is my image <img src="{{this.url}}" >
{{/each}}
</template>
我的应用有点像 TelescopeJS,但更简单。我试图回应已添加到 post 添加表单中的特定图像,该表单需要输入 post 的名称、图片、类别和描述。它有 2 个集合,一个用于文章,另一个用于图像(不是 mongo 集合,它是一个 FS 集合。)文章集合存储名称、描述和类别名称,另一个存储图像。 **我的问题是:** 在 FS 集合文档中,循环
{{#each images}}
<img src="{{this.url}}" alt="" class="thumbnail" />
{{/each}}
其中图片:returns Images.find({}) 我的文章代码是:
{{#each articles}}
<li style="margin-right: 1%;">{{>article}}</li>
{{/each}}
其中文章:returns Articles.find({})
我的文章模板有图像循环,这会导致集合中的所有图像显示在一个 post 中。我只想为特定 post 显示特定图像。
这些是事件:
'change .img': function(event, template) {
FS.Utility.eachFile(event, function(file) {
Images.insert(file, function (err, fileObj) {
//Inserted new doc with ID fileObj._id, and kicked off the data upload using HTTP
});
});
},
'click .save':function(evt,tmpl){
var description = tmpl.find('.description').value;
var name = tmpl.find('.name').value;
var date=new Date();
var cat = tmpl.find('.selectCat').value;
Articles.insert({
description:description,
name:name,
time:date.toLocaleDateString()+' at '+date.toLocaleTimeString(),
author:Meteor.userId(),
userEmail:Meteor.user().username,
category:cat,
});
}
<template name="article">
{{#each images}}
<img src="{{this.url}}" alt="" class="thumbnail" />
{{/each}}
Here goes the {{name_of_post}}
Here {{the_category}}
Here {{the_description}}
</template>
所以发生的事情是,到目前为止我上传的所有图片都显示在一个 post 中并且所有 post 的图片看起来都一样。请帮忙!
你应该知道 fsFile support Metadata 所以也许你不需要 Articles Collection
所以我们可以制作一个新的eventHandler
。
'click .save':function(evt,tmpl){
var description = tmpl.find('.description').value,
file = $('#uploadImagePost').get(0).files[0], //here we store the current file on the <input type="file">
name = tmpl.find('.name').value,
date=new Date(),
cat = tmpl.find('.selectCat').value,
fsFile = new FS.File(file); // we create an FS.File instance based on our file
fsFile.metadata = { //this is how we add Metadata aka Text to our files
description:description,
name:name,
time:date.toLocaleDateString()+' at '+date.toLocaleTimeString(),
author:Meteor.userId(),
userEmail:Meteor.user().username,
category:cat,
}
Images.insert(fsFile,function(err,result){
if(!err){
console.log(result) // here you should see the new fsFile instance
}
});
}
这就是我们的新活动的外观,现在我们的 .save
按钮将所有内容插入同一个集合。
这就是我们如何使用关键字 'metadata.fieldName'
.
FS.File
实例字段
例如。
Teamplate.name.helpers({
showCategory:function(){
// var category = Session.get('currentCategory') you can pass whatever data
// you want here from a select on the html or whatever.
//lets say our var its equal to 'Music'
return Images.find({'metadata.category':category});
}
})
现在我们像任何普通集合一样在 html
上使用该助手
<template name="example">
{{#each showCategory}}
Hi my category is {{metadata.category}} <!-- we access the metadata fields like any normal field on other collection just remember to use the 'metadata'keyword -->
This is my image <img src="{{this.url}}" >
{{/each}}
</template>