在流星文件上传和管理客户端与服务器之间的数据时,我真的迷失了方向。
我使用Veliov Group的Meteor Files在客户端上传多个图像。它们存储在名为FilesCollection
的图片中,我的Mongo.Collection
名为广告。
collections.js:
Adverts = new Mongo.Collection('adverts');
Images = new FilesCollection({
collectionName: 'Images',
storagePath: () => {
return `~/public/uploads/`;
},
allowClientCode: true, // Required to let you remove uploaded file
onBeforeUpload(file) {
// Allow upload files under 10MB, and only in png/jpg/jpeg formats
if (file.size <= 10485760 && /png|jpg|jpeg/i.test(file.ext)) {
return true;
} else {
return 'Limit 10mb';
}
}
});
// if client subscribe images
if (Meteor.isClient) {
Meteor.subscribe('files.images.all');
};
// if server publish images
if (Meteor.isServer) {
Images.allowClient();
Meteor.publish('files.images.all', () => {
return Images.collection.find();
});
};
我想要实现的是,当我上传图片时,我想将网址存储在我正在使用的广告中的文档中(我使用iron:router
访问这些文件_id)。
我设法获取了网址,但仅限于上传的第一张图片,我在文档中看到的代码:
Template.imageUpload.helpers({
imageFile: function () {
return Images.collection.findOne();
},
myImage: () => {
console.log(Images.findOne({}).link())
}
})
Template.imageUpload.events({
'change #fileInput': function (e, template) {
if (e.currentTarget.files) {
_.each(e.currentTarget.files, function (file) {
Images.insert({
file: file
});
});
}
}
})
我使用Meteor.Call将URL发送到服务器,但我无法使用新属性pic
和图像的值url
来更新文档
server.js:
imageUpload: (actDoc, imgURL) => { // actDoc is the document id that I'm working on the client
Adverts.update({'reference': actDoc}, {$set: {'pic': imgURL}})
},
这可能是一个愚蠢的问题,文档中的所有内容都可能存在,但我来回抄袭这些文档,我无法理解我需要做什么。
答案 0 :(得分:0)
我的问题的答案是做服务器端
UICollectionViewController
main.js server