Как скачать коллекции монго в виде файлов, используя iron-router (и ground-db)?
Что я хочу сделать: Указать маршрут (с железным маршрутизатором), который запускает загрузку файла при доступе. Файл содержит информацию из приложений Монго-Базы данных.
Вариант использования: я разрабатываю автономное веб-приложение "метеор", которое также экспортируется как приложение для Android. В приложении пользователь может сохранить несколько различных данных / информации. Пользователь должен иметь возможность экспортировать и импортировать эти данные из приложения (например, когда он хочет переключить устройство).Может быть решение, которое отличается от моего (этого) подхода, я, конечно, тоже открыт для этого.
Дополнительная информация: Мои базы данных mongo являются локальными (только для клиентов) с использованием GroundDB. Было бы идеально, если бы решение также работало, когда метеорологическое приложение работает как приложение для 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);
,
1 ответ
Мне не удалось найти решение, в котором задействован железный роутер. Но другое простое решение, как в " Загрузить файл URL-адреса данных":
Просто создайте 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");
}