我正在使用NodeJS,Sequelize和PostgreSQL创建一个多租户Web应用程序。我正在实现共享数据库,独立的架构方法。
我有一个注册模型和一个商店模型
// 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
它应该在其中subdomain
的“ storeId”。registers
应该是subdomain
的主键的模式内生成“ registers”和“ stores”表。 }。
但是,当在架构内部创建表时,stores
上的storeId。subdomain
是registers
。public
的主键。
所有其他关联都在发生这种情况。我尝试在Sequelize文档上进行搜索,阅读了Sequelize上的多个问题,但找不到任何解决方案。
任何帮助将不胜感激。谢谢。