Как связать модели внутри соответствующей схемы, используя sequelize? - PullRequest
0 голосов
/ 18 февраля 2019

Я создаю мультитенантное веб-приложение с использованием NodeJS, Sequelize и PostgreSQL.Я реализую общую базу данных, используя разные схемы.

У меня есть модель регистра и модель хранилища

// Register Model
const Register = sequelize.define('register', {
    id: {
        type: DataTypes.UUID,
        unique: true,
        allowNull: false,
        primaryKey: true,
        defaultValue: uuidv4(),
    },
    name: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    isOpen: {
        type: DataTypes.BOOLEAN,
        defaultValue: false,
    },
    archivedStatus: {
        type: DataTypes.BOOLEAN,
        defaultValue: false,
    },
    archivedAt: {
        type: DataTypes.DATE,
    },
});
// Store Model
const Store = sequelize.define('store', {
    id: {
        type: DataTypes.UUID,
        unique: true,
        allowNull: false,
        primaryKey: true,
        defaultValue: uuidv4(),
    },
    name: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    tin: {
        type: DataTypes.STRING,
    },
    type: {
        type: DataTypes.ENUM('POS', 'WAREHOUSE'),
        defaultValue: 'POS',
    },
    phone: {
        type: DataTypes.INTEGER,
    },
    archivedStatus: {
        type: DataTypes.BOOLEAN,
        defaultValue: false,
    },
    archivedAt: {
        type: DataTypes.DATE,
    },
});

Ассоциация между ними

Register.belongsTo(Store);
Store.hasMany(Register);

При регистрации арендатора я создаю схему с поддоменом, а затем синхронизирую все модели со схемой.

await sequelize.createSchema(subdomain);
await register.schema(subdomain).sync(); // Register Model
await store.schema(subdomain).sync(); // Store Model

Он должен сгенерировать таблицу "registers" и "Storage" внутри схемы, где "storeId "subdomain. registers должен быть первичным ключом subdomain. stores.

Однако, когда таблицы создаются внутри схемы, storeId на subdomain. registers является первичным ключом public. stores.

Это происходит для всех других ассоциаций.Я попытался найти его в Sequelize docs, прочитал несколько вопросов по Sequelize, но не смог найти никакого решения.

Любая помощь будет принята с благодарностью.Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...