您如何使用Meteor执行数据库迁移?有了Ruby on rails,就有了ActiveRecord::Migration."Meteor "中有没有类似的机制?
例如,我用一些用户数据制作了一个应用程序.我使用JSON格式在Mongo中存储数据.应用程序会更改,JSON数据库模式也需要更改.我可以编写一个迁移方法来更改模式,但是,我只希望在服务器数据库过期时运行此方法.
您如何使用Meteor执行数据库迁移?有了Ruby on rails,就有了ActiveRecord::Migration."Meteor "中有没有类似的机制?
例如,我用一些用户数据制作了一个应用程序.我使用JSON格式在Mongo中存储数据.应用程序会更改,JSON数据库模式也需要更改.我可以编写一个迁移方法来更改模式,但是,我只希望在服务器数据库过期时运行此方法.
这里面没有内置的东西.目前我自己所做的工作与Rails的工作方式类似,只是作为启动的一部分,而不是单独的任务.首先创建一个名为Migrations的Meteor.Collection
,然后对于每个离散迁移,在启动时运行的server
子目录下创建一个函数.只有在以前没有运行过迁移时,它才应该运行迁移,完成迁移后,它应该在Migrations集合中标记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"});
}
});
您可以扩展此技术以支持向下迁移(查找给定迁移的存在并将其反转),对迁移强制执行排序顺序,并根据需要将每个迁移拆分为单独的文件.
想一想用于自动化这一点的智能软件包将是很有趣的.