创建knex迁移

时间:2016-04-05 16:21:42

标签: knex.js

我发现有两种方法可以在迁移文件中编写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();
      })
    ]);
}

哪一个是正确的做法?

2 个答案:

答案 0 :(得分:2)

这是添加knex脚本的正确方法,因为Promises是处理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();
  })
]);
}

答案 1 :(得分:1)

Ricardo GracaKnex's github issue page

回答
  

在这种情况下,它没有什么区别。

     

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