Использование Async / Await с миграциями Knex - PullRequest
0 голосов
/ 05 декабря 2018

Я использую миграцию Knex с обычными методами обещаний, например:

exports.up = function (knex) {
    return knex.schema
        .hasTable('table_name')
        .then(function (exists) {
            if (!exists) {
                return knex
                    .schema
                    .createTable('table_name', function (table) {
                        table.increments('id').primary();
                    })
                    .then(console.log('created table_nametable'));
            }
        });
};

Как бы я реорганизовал это для использования async / await?Общая структура, в которую мы возвращаем knex.schema с цепочкой методов обещаний, бросает меня в тупик.

1 Ответ

0 голосов
/ 05 декабря 2018

что-то вроде этого должно сделать:

exports.up = async function (knex) {  
    if (! (await knex.schema.hasTable('table_name')) ) {
      await knex.schema.createTable('table_name', function (table) {
        table.increments('id').primary();
      });
    }

    // awaiting sequentially multiple promises to resolve one by one
    for (let item of arrayOfStuffToAwait) {
      await item;
    }
}

exports.down = async function (knex) {  
  await knex.schema.dropTable('table_name');
}
...