Ответ 1
Для этого ничего не создано. То, что я сделал сейчас, похоже на то, как работает Rails, но как часть запуска вместо отдельной задачи. Сначала создайте Meteor.Collection
с именем Migrations, а затем для каждой дискретной миграции создайте функцию под подкаталогом server
, которая запускается при запуске. Он должен запускать только миграцию, если она еще не выполнялась раньше, и она должна отмечать миграцию в коллекции Migrations после ее завершения.
// database migrations
Migrations = new Meteor.Collection('migrations');
Meteor.startup(function () {
if (!Migrations.findOne({name: "addFullName"})) {
Users.find().forEach(function (user) {
Users.update(user._id, {$set: {fullname: users.firstname + ' ' + users.lastname}});
});
Migrations.insert({name: "addFullName"});
}
});
Вы можете расширить эту технику, чтобы поддерживать миграцию вниз (искать наличие заданной миграции и отменить ее), принудительно выполнить порядок сортировки в миграциях и разделить каждую миграцию на отдельный файл, если хотите.
Было бы интересно подумать о смарт-пакете для автоматизации этого.