首页 > 解决方案 > Sequelize.js model.schema 包含

问题描述

我创建了一个名为 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' 没有存在”),因为 Sequelize 生成查询的方式不会在事件表的名称前面加上模式。我期待 Sequelize 生成类似 'data_eur1.<%tenant.name%>_events' 的东西......

我可能以错误的方式使用 sequelize,但在文档和网络上都找不到任何相关内容。

标签: sequelize.js

解决方案


我可能有一个解决方法:

Person.schema(tenant.name).findAll({where: ...}, include: [{
as:'events', model: EventCase.schema(tenant.name)]);

这似乎有效。但是,我并没有真正利用关联的附加值。


推荐阅读