javascript - CollectionFS和Meteor : how to join uploaded files with existing collection

标签 javascript meteor

我有由 autoform 创建的票证集合。创建一张票证后,我需要上传与此相关的文件作为附件。当文件与任何人都没有关系时,一切正常。但是,当我尝试使用当前对象 ID 在集合中添加字段时,什么也没有出现。 我的代码:

集合:

tickets = new Mongo.Collection("tickets");
var Schemas = {};
Schemas.tickets = new SimpleSchema({

    title: {
      type: String,
      label: "Titolo"
    },
    description: {
      type: String,
      label: "Descrizione"
    },
    deadline: {
      type: Date,
      label: "Deadline prevista"
    },
    user: {
      type: String,
      autoValue:function(){ return this.userId; }
    },
    status: {
      type: String,
      autoValue: function(){ return "open"; }
    }

});

tickets.attachSchema(Schemas.tickets);

SimpleSchema.messages({
  "required title": "Il [label] è richiesto",
  "required description": "La [label] è richiesta",
  "required deadline": "La [label] è richiesta"
});
//
Files = new FS.Collection("Files", {
  stores: [new FS.Store.FileSystem("Files", {path: "~/uploads"})]
});

和模板:

Template.dashboard.events({
  'click #fileUpload' : function(event, template) {
    var file = template.find('.myFileInput').files[0];
    var ticket = this._id;
      Files.insert(file, function (err, fileObj) {
        if (err) {
          console.log(err);
        } else {
          console.log(ticket);
          tickets.update({_id: ticket}, {$push: {files: ticket}});
        }
      });
  }
});

如果您有任何其他方法建议我,请告诉我。

最佳答案

这可以帮助:https://github.com/CollectionFS/Meteor-CollectionFS#storing-fsfile-references-in-your-objects

或者您可以为文件集合创建“元数据”字段,然后将其与票证集合连接起来:

Template.dashboard.events({
  'click #fileUpload' : function(event, template) {
    var file = template.find('.myFileInput').files[0];
    var ticket = this._id;
    var newFile = new FS.File(file);
    newFile.metadata = {
        ticketId: ticket //ticket id - so you know that this file is from particular ticket, you can then find it by Files.find({'metadata.ticketId': ticket});
    };
      Files.insert(newFile, function (err, fileObj) {
        if (err) {
          console.log(err);
        }
      });
  }
});

关于javascript - CollectionFS和Meteor : how to join uploaded files with existing collection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26464072/

相关文章:

javascript - JavaScript 中基于逗号和空格的分割

javascript - 自动化网络分析测试过程

javascript - Meteor 和/private 目录

javascript - 安全 header 在 PayPal Mass Payments 中无效

ios - Meteor:在 iOS 上点击电话号码时禁用自动调用

javascript - 在 typescript 中使用 chrome 扩展 api

javascript - JavaScript(异步)如何在继续之前确定 "wait"的用途?

javascript - 编辑 html/js 代码并在网页中显示输出

coffeescript - 使用 Meteor >0.6.0 和 CoffeeScript 的全局类

javascript - 删除对象 JS 中的节点