创建knex迁移

3
我发现在迁移文件中,我们可以用两种方式编写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个回答

3

Ricardo GracaKnex的github问题页面回答:

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

你只有在需要在进行另一张表的更改之前对某个表进行更改时才会使用基于Promise的方法。例如,如果您需要从另一个表引用某个表,而这些表都不存在,则可以通过Promise创建第一个表(不依赖于任何其他表),然后当该Promise解析时,您将创建第二个表。这样可以确保满足依赖关系。


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();
  })
]);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接