我创建了一个名为 Person 的模型,它使用 .schema(tenant.name,{schemaDelimiter: '_'}) 将记录存储在单独的表中。
然后,为了获取相关记录,我使用以下语句:
Person.schema(tenant.name).findAll({where: ...});
这很好用!现在我添加另一个名为 EventCase 的模型和以下关联:
Person.hasMany(EventCase,{as: 'events', foreignKey: 'entity_id', constraints: false, scope: {entity_type: 'IND'}});
我想使用带有包含选项的查找器。基本上,我的代码是:
Person.schema(tenant.name).findAll({where: ...}, include: ['events']);
但我收到一个错误 (SequelizeDatabaseError","parent":{"code":"ER_NO_SUCH_TABLE","errno":1146,"sqlState":"42S02","sqlMessage":"Table 'data_eur1.events' 没有存在”),因为 Sequalize 生成查询的方式没有在事件表的名称前面加上模式。我期待 Sequelize 生成类似 'data_eur1.<%tenant.name%>_events'...我可能以错误的方式使用了 sequelize,但我在文档或网络上都找不到任何相关内容。
最佳答案
我可能有一个解决方法:
Person.schema(tenant.name).findAll({where: ...}, include: [{
as:'events', model: EventCase.schema(tenant.name)]);
这似乎有效。但是,我并没有真正利用协会的附加值(value)。
关于Sequelize.js model.schema 与 include,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66006392/