Как скачать коллекции монго в виде файлов, используя 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");

}

Другие вопросы по тегам