使用元数据(Meteor)调用CollectionFS文件

时间:2014-02-20 04:34:10

标签: javascript meteor

我正在创建一个允许上传和显示图像的应用程序。用户可以上传图像,然后所有图像都显示在一个页面上。最大的问题是所有图像都需要以所有者的名义显示。

我使用CollectionFS上传和存储文件,这是我的storeFile方法:

Template.queueControl.events({
  'change .fileUploader': function (e) {
      var files = e.target.files;
      for (var i = 0, f; f = files[i]; i++) {
          console.log(Meteor.user().username);
          ImageFS.storeFile(f, {username: Meteor.user().username});
      }
  }
});

我以为我可以使用这样的查询来回调文件:

Template.studentModal.getImage = function(){
    return ImageFS.find({username: Session.get("studentUsername")});
}

设置和获取用户名可以正常工作并且符合预期。它不会返回任何记录。

谢谢, 斯凯勒

2 个答案:

答案 0 :(得分:3)

您应该转换"文件"到" FS.File"在调用" storeFile"之前。现在,您可以添加"所有者"等元数据。到图像。

这至少应该在Meteor 0.9中起作用:

Template.queueControl.events({
  'change .fileUploader': function (e) {
      var files = e.target.files;
      for (var i = 0, f; f = files[i]; i++) {
          var newFile = new FS.File(files[i]);
          newFile.owner = Meteor.user().username;
          Images.insert(newFile, function(err, fileObj) {});
      }
  }
});

答案 1 :(得分:0)

您应该存储userId并订阅发布所显示用户的发布,只需使用用户名。 我使用https://github.com/englue/meteor-publish-composite作为出版物合成。