Как запустить миграцию Knex условно - PullRequest
0 голосов
/ 13 апреля 2020

Я по ошибке удалил миграцию, которая добавила столбцы в групповую таблицу, а затем пришлось добавить ее обратно в мою локальную базу данных. Однако на производстве миграция не была удалена по ошибке, поэтому теперь она выдает ошибку при запуске добавленной миграции.

Признавая, что, возможно, существует более элегантное решение, на данный момент я хочу просто добавить условно, что запускает эту добавленную миграцию, только если добавленные столбцы не существуют.

Вот текущая добавленная миграция:

exports.up = function(knex, Promise) {
  return knex.schema.table('groups', function(t) {
    t.specificType('fulltext', 'tsvector');
    t.index('fulltext', null, 'gin');
  });
};

exports.down = function(knex, Promise) {
  return knex.schema.table('groups', function(t) {
    t.dropColumn('fulltext');
    t.dropIndex([ 'fulltext' ]);
  });
};

1 Ответ

1 голос
/ 14 апреля 2020

Вы должны просто воссоздать / заполнить вашу локальную БД ... но в любом случае, если вы действительно хотите это сделать, вам нужно использовать https://knexjs.org/#Schema -hasColumn

exports.up = function(knex, Promise) {
  return knex.schema.hasColumn('tablename', 'columnname')
    .then(res => {
      if (res) {
        return; // skip
      }
      return knex.schema.table('groups', function(t) {
        t.specificType('fulltext', 'tsvector');
        t.index('fulltext', null, 'gin');
      });
    });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...