【问题标题】:Meteor / NodeJS run own code before migration start (Meteor startup)Meteor / NodeJS 在迁移开始之前运行自己的代码(Meteor 启动)
【发布时间】:2020-02-06 00:13:20
【问题描述】:

是否有可能在迁移运行之前在 Meteor / Node 应用程序中执行自己的代码?
我知道Meteor.startup,但此代码在 DB Migrations afaik 之后运行。

编辑:我使用的迁移包idmontie:migrations@1.0.3

【问题讨论】:

  • 你使用哪个迁移包?
  • @ChristianFritz idmontie:migrations@1.0.3

标签: node.js mongodb meteor


【解决方案1】:

migration package you use 似乎不支持这一点。但是,如果您能够切换到更常见的 percolate:migrations,那么您可以完全控制迁移发生的时间,因为您实际上需要显式调用它,例如,

Meteor.startup(() => {
  /* the code you want to run first here.. */
  Migrations.migrateTo('latest');
});

过去,我什至做过这样的事情,在迁移到某些版本之间运行一些代码:

Meteor.startup(() => {
  /* some code to run before ... */
  Migrations.migrateTo(3);
  /* some code to run in between... */
  Migrations.migrateTo(5);
});

【讨论】:

  • 您知道是否可以选择从迁移中跳过某个版本,还是我必须自己在 mongo 中编辑迁移控制条目?
  • 理论上您可以只写入db.migrations 集合中的唯一文档,然后手动增加您声称在其中的版本。这将有效地跳过迁移。但迁移的重点通常是不应该跳过任何步骤,所以这似乎不是一个可以避免的好主意。
  • 我同意你的观点,问题是,我需要找到一种方法,在更新现有系统时不从旧包执行迁移,而在新系统上我想做所有的迁移。
  • 啊,是的,这种情况下,只需将现有系统上的db中的版本号设置为旧包已经迁移到的版本即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 2015-03-02
  • 2017-10-03
  • 2017-05-31
相关资源
最近更新 更多