Я создаю мультитенантное веб-приложение с использованием 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, но не смог найти никакого решения.
Любая помощь будет принята с благодарностью.Спасибо.