多租户(Schema隔离)场景下Sequelize模型关联别名冲突问题求助
多租户(Schema隔离)场景下Sequelize模型关联别名冲突问题求助
我刚接触后端开发,还请各位大佬多多包涵😅!
目前我在做一个多租户项目,数据库结构是这样的:public schema里有一张partners表,每个合作伙伴都有自己独立的schema,比如partner_1、partner_2这类,每个租户的schema里都包含customers、orders、items、addresses这些业务表。
现在我在Sequelize里给各个模型设置关联的时候碰到了头疼的问题——关联别名冲突。我原本觉得,既然每个关联都是对应不同租户的schema,用相同的别名(比如"addresses"、"orders")应该没问题,但实际运行时直接报错,提示不能给多个关系使用同一个别名。
举个例子,我是循环遍历每个租户schema来设置关联的,代码大概是这样:
// 遍历每个租户schema的循环内执行以下代码 Customer.schema(schema).hasMany(CustomerAddress.schema(schema), { as: "addresses", foreignKey: "customer_id", onDelete: "CASCADE" }); Customer.schema(schema).hasMany(Order.schema(schema), { as: "orders", foreignKey: "customer_id", onDelete: "CASCADE" }); Customer.schema(schema).hasMany(Item.schema(schema), { as: "items", foreignKey: "customer_id", onDelete: "CASCADE" });
我有点困惑,明明每次循环的schema参数都是不同的,相当于每个关联都是绑定到不同schema的模型上,为什么Sequelize还是会把这些别名当成全局的来校验?有没有什么办法能让别名只在当前schema的模型上下文里生效,或者有其他更合适的方式来处理这种多租户schema隔离场景下的关联设置?
麻烦各位大佬给点思路,谢谢啦!
备注:内容来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

