如何 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会容易很多。

希望这对您有所帮助。