自定义迁移 Custom Migrations

Directus 允许添加自定义迁移文件,只要执行“directus 数据库迁移:*”命令,这些文件就会运行。 所有迁移都必须位于“extensions/migrations”文件夹中。

文件名

文件名遵循以下结构:

[identifier]-[name].js

for example:

20201202A-my-custom-migration.js

结构

迁移必须导出 updown 函数。 这些函数获得一个 Knex 实例,几乎可以用来做任何事情。

js
module.exports = {
  async up(knex) {
    await knex.schema.createTable('test', (table) => {
      table.increments()
      table.string('rijk')
    })
  },

  async down(knex) {
    await knex.schema.dropTable('test')
  },
}

看到这些迁移有点混战,你真的会损害你的数据库。 在添加这些迁移之前,请确保您知道自己在做什么并备份数据库。

迁移和 Directus 架构

迁移可用于管理 Directus 集合的内容(例如初始水合作用)。 为此,您必须确保架构在运行迁移之前是最新的。 实现它的一种方法是选择退出默认的“directus bootstrap”进程并运行:

bash
npx directus database install
# notice that schema is applied before running migrations
npx directus schema apply ./path/to/snapshot.yaml
npx directus database migrate:latest

您可能想要添加额外的步骤来反映 directus bootstrap 的其他职责。