我想做什么:指定一个路径(iron-router),在访问时启动文件下载。该文件包含来自应用程序mongo-Databases的信息。
使用案例:我正在开发一个meteor 离线网络应用程序,它也会被导出为Android应用程序。在应用程序内,用户可以保存多个不同的数据/信息。用户应该能够从应用程序内部导出和导入该数据(例如,当他想要切换设备时)。 可能有一个解决方案,与我的(这个)方法完全不同,我当然也对此持开放态度。
其他信息:我的mongo-Databases是使用groundDB的本地(仅限客户端)。 如果解决方案在meteor-application作为android应用程序运行时也能正常工作,那将是完美的。文件的实际格式是次要的(类似于csv / json / ...)。
当前方法:
// Define route...
Router.route('/download', function(){
/**
* Combine data from different Mongo
* Collections in one js variable in JSON format:
**/
var dataToDownload = [];
dataToDownload[0] = Collection.find().fetch();
dataToDownload[1] = AnotherCollection.find().fetch();
/**
* Convert JSON to string for download (not sure
* if necessary?!):
**/
var data = "text/json;charset=utf-8,"
+ encodeURIComponent(JSON.stringify(dataToDownload));
/**
* This obviosly doesn't work since it's trying to
* render a template which has the name equal to
* my JSON string:
**/
this.render(data);
});
基本上我正在寻找能够用......替换this.render(data);
的东西。 (伪代码)this.download(data);
。
答案 0 :(得分:0)
我没有设法找到一个涉及铁路由器的解决方案。但另一个直截了当的解决方案,如'Download data url file':
只需使用集合数据创建Blob,为其创建ObjectURL并使用锚点(<a id="anchor">Download</a>
)开始下载。
var blob = new Blob([JSON.stringify(dataToDownload, null, 2)], {type : 'application/json'});
var url = URL.createObjectURL(blob);
$('#anchor').attr("href", url);
$('#anchor').attr("download", "someName");
}