如何 link 从自动表单到 CollectionFS 中的用户集合的图像以显示个人资料图片?
How to link image from autoform to user collection in CollectionFS for displaying a profile picture?
我使用自动表格保存了他们上传到 "images" 集合中的用户个人资料照片。但是我不知道如何调用将特定图片加载到模板上。以下不显示模板上的图像。但是,如果我将 Images.find({'doc.metadata.ownerId':Meteor.userId()});
更改为 Images.find()
,则会加载所有图像,但我无法指定我想要的图像。
this.Images = new FS.Collection("Images", {
stores: [new FS.Store.GridFS("Images", {})]
});
Images.files.before.insert(function(doc) {
doc.metadata = {
date: Date.now(),
ownerId: this.userId
};
console.log("before", doc);
return doc;
});
Template.photos.helpers({
Images: function () {
Images.find({'doc.metadata.ownerId':Meteor.userId()});
}
});
这个怎么样:
Template.photos.helpers({
Images: function () {
Images.find({'metadata.ownerId':Meteor.userId()});
}
});
你正在做的是用户上传的图片,你将用户标识添加为元值并存储它。它只会让您获取用户上传的所有图像。由于您还使用了时间戳,因此最新的将是最新的个人资料照片。
或者,在用户文档中,将 photo
字段添加到 profile
。
这样,当用户上传照片时,将 photo
值设置为已上传图像的键并显示照片,您可以执行
Images.findOne({ _id: Meteor.user().profile.photo })
如果使用autoform,在profile.photo
中存储图片ID会容易很多。
希望这对您有所帮助。
我使用自动表格保存了他们上传到 "images" 集合中的用户个人资料照片。但是我不知道如何调用将特定图片加载到模板上。以下不显示模板上的图像。但是,如果我将 Images.find({'doc.metadata.ownerId':Meteor.userId()});
更改为 Images.find()
,则会加载所有图像,但我无法指定我想要的图像。
this.Images = new FS.Collection("Images", {
stores: [new FS.Store.GridFS("Images", {})]
});
Images.files.before.insert(function(doc) {
doc.metadata = {
date: Date.now(),
ownerId: this.userId
};
console.log("before", doc);
return doc;
});
Template.photos.helpers({
Images: function () {
Images.find({'doc.metadata.ownerId':Meteor.userId()});
}
});
这个怎么样:
Template.photos.helpers({
Images: function () {
Images.find({'metadata.ownerId':Meteor.userId()});
}
});
你正在做的是用户上传的图片,你将用户标识添加为元值并存储它。它只会让您获取用户上传的所有图像。由于您还使用了时间戳,因此最新的将是最新的个人资料照片。
或者,在用户文档中,将 photo
字段添加到 profile
。
这样,当用户上传照片时,将 photo
值设置为已上传图像的键并显示照片,您可以执行
Images.findOne({ _id: Meteor.user().profile.photo })
如果使用autoform,在profile.photo
中存储图片ID会容易很多。
希望这对您有所帮助。