在点击事件中将数据发送到路由器

时间:2015-07-07 13:11:57

标签: mongodb amazon-web-services meteor amazon-s3 iron-router

我正在使用Iron Router从我的AWS S3 Bucket中存储的数据创建ZIP文件。为此,我想查询我的文件,只根据当前模板中的数据上下文将文件放入我的ZIP文件夹。

我当前的数据上下文有两个字段(_id,filetype),用于查询我的FS.Collection。不幸的是,只有_id可用于查询路由器中的文件。我无法将文件类型转换为铁路由器:

我的点击事件:

  'click #download': function() {
      Router.go('zip.download', {_id: this._id, _Filetype: this.filetype});
   }

我的路线:

/*ZIP Files*/
Router.route('/zip/:_id', {
  where: 'server',
  name: 'zip.download',
  action: function() {
    console.log(this.params); //Gives me only _id, but not _Filetype

    // Create zip
    var zip = new JSZip();
    MyCollection.find({refrenceID: this.params._id, filetype: this.params._Filetype})
    .
    .
    .
    // End Create Zip - This part works 
  }
});

将数据传递到路由器的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

目前,您的_Filetype未收到,因为它未在您的路线中声明为有效参数:/zip/:_id。 (在那里没有提到:_Filetype

如果您不想将fileType作为参数放在路线中,您仍然需要以某种方式提供它。这似乎是使用query parameters的好时机!

在您的点击事件中:

'click #download': function() {
    Router.go('zip.download', {_id: this._id}, , {query: 'fileType=' +  this.filetype});
}

在你的路线中:

/*ZIP Files*/
Router.route('/zip/:_id', {
  where: 'server',
  name: 'zip.download',
  action: function() {
    console.log(this.params); //Gives me only _id, but not _Filetype

    // Create zip
    var zip = new JSZip();
    MyCollection.find({refrenceID: this.params._id, filetype: this.params.query.fileType})
    .
    .
    .
    // End Create Zip - This part works 
  }
});