Sequelize (с Postgres) - определите новую модель с engine = postgres - PullRequest
0 голосов
/ 11 мая 2018

Сценарий: я имею дело с базой данных, которая работает как postgres, так и infobright, где для infobright установлено значение default engine.

Цель: сделать, чтобы Sequelize создал таблицу в postgres

Проблема: Sequelize создает таблицу в Infobright по умолчанию.

Подробное объяснение:

Итак, когда я пытаюсь определить модель, которая выглядит следующим образом:

sequelize.define('mymodel', {
        file_name: {
          type: Sequelize.STRING,
        }
    }, {
        schema: 'myschema'
    });

Сгенерированный sql выглядит так:

create
    table
        if not exists "myschema"."mymodel"(
            "id" serial,
            "file_name" varchar(255),
            "createdAt" timestamp with time zone not null,
            "updatedAt" timestamp with time zone not null,
            primary key("id")
        );

ПРИМЕЧАНИЕ. Из-за отсутствия with (engine = postgres) система пытается создать таблицу в механизме по умолчанию, т.е. infobright, а это не то, чего я ожидаю.

Ожидаемый SQL

create
    table
       if not exists "myschema"."mymodel"(
            "id" serial,
            "file_name" varchar(255),
            "createdAt" timestamp with time zone not null,
            "updatedAt" timestamp with time zone not null,
            primary key("id")
        ) with (
             engine = postgres
        );

Примечание: выполнение вышеизложенного создает таблицу в postgres.

Я пытался указать двигатель в sequelize, а также в конфигурации модели, но он не работает.

Вопросы: Как мне настроить Sequelize или мою модель, чтобы она генерировала ожидаемый sql. Открыты и для других предложений.

...