Sequelize addColumn миграция всегда ссылается на схему publi c - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть приложение Express с Sequelize в качестве ORM и PostgreSQL в качестве базы данных. База данных настраивается таким образом, чтобы у всех арендаторов в моем приложении были разные схемы. Миграционные файлы, которые существуют в моем приложении, содержат миграции addColumn / removeColumn. Но когда я запускаю команду npx sequelize-cli db: migrate, я получаю следующую ошибку.

ОШИБКА: отношение "publi c .table_name" не существует

Вышеуказанная ошибка выбрасывает только для файлов миграции, которые содержат миграции addColumn / removeColumn. Также я нигде не ссылаюсь на схему publi c (даже удалил схему publi c из db). Есть ли способ запустить миграцию для определенной схемы (скажем, test_schema) в Sequelize без жесткого кодирования имени схемы в файлах миграции?

Обновление # 2

'use strict';

module.exports = {
  up: async(queryInterface, Sequelize) => {
    try {
      await queryInterface.addColumn('table_name', 'new_field_name', {
        type: Sequelize.INTEGER
      });
      return Promise.resolve();
    } catch (e) {
      return Promise.reject(e);
    }
  },

  down: async(queryInterface, Sequelize) => {
    try {
      await queryInterface.removeColumn('table_name','new_field_name');
      return Promise.resolve();
    } catch (e) {
      return Promise.reject(e);
    }
  }
};

Выше приведен код для миграции addColumn.

1 Ответ

0 голосов
/ 29 апреля 2020

Вы можете использовать расширенный синтаксис addColumn / removeColumn следующим образом:

await queryInterface.addColumn({ schema: 'schema_name', tableName: 'table_name' }, 'new_field_name', {
        type: Sequelize.INTEGER
      });

...