【问题标题】:Creating knex migration创建 knex 迁移
【发布时间】:2016-04-05 16:21:42
【问题描述】:

我发现有两种方法可以在迁移文件中写入 knex 迁移。

exports.up = function (knex) {
    return knex.schema
      .createTableIfNotExists('foo', function (table) {
        table.increments('id').unique();
        table.string('foo1');
        table.string('foo2');
      })
     .createTableIfNotExists('bar', function (table) {
        table.increments('bar1');
        table.string('bar2').index();
      });

或者

exports.up = function (knex) {
    return Promise.all([
      knex.schema.createTableIfNotExists('foo', function (table) {
        table.increments('id').unique();
        table.string('foo1');
        table.string('foo2');
      }),
      knex.schema.createTableIfNotExists('bar', function (table) {
        table.increments('bar1');
        table.string('bar2').index();
      })
    ]);
}

哪一种方法是正确的?

【问题讨论】:

    标签: knex.js


    【解决方案1】:

    Ricardo GracaKnex's github issue page回答

    在这种情况下,它没有任何区别。

    如果您需要进行一些更改,您只会使用基于 Promise 的方法 在另一个表中进行另一个更改之前。例如,如果 你需要从另一个表中引用某个表,而没有一个 那些表还存在,您将创建第一个表(那个 不依赖任何东西)在一个承诺中,然后当那个承诺 解决了您将创建第二个表。这样你就可以确保 依赖关系得到满足。

    【讨论】:

      【解决方案2】:

      这是添加 knex 脚本的正确方法,因为 Promise 是在 knex 中处理查询的首选方式,因为它们允许您从履行处理程序返回值。

      exports.up = function (knex) {
      return Promise.all([
        knex.schema.createTableIfNotExists('foo', function (table) {
          table.increments('id').unique();
          table.string('foo1');
          table.string('foo2');
        }),
        knex.schema.createTableIfNotExists('bar', function (table) {
          table.increments('bar1');
          table.string('bar2').index();
        })
      ]);
      }
      

      【讨论】:

        猜你喜欢
        • 2020-04-18
        • 1970-01-01
        • 1970-01-01
        • 2018-09-16
        • 1970-01-01
        • 2019-08-12
        • 2020-03-07
        相关资源
        最近更新 更多