sequelize.js - 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,但在文档和网络上都找不到任何相关内容。
解决方案
我可能有一个解决方法:
Person.schema(tenant.name).findAll({where: ...}, include: [{
as:'events', model: EventCase.schema(tenant.name)]);
这似乎有效。但是,我并没有真正利用关联的附加值。
推荐阅读
- logstash - 如何将 linux 托管日志作为 filebeat.yml 中的输入路径?
- javascript - 如何计算多个值之间的范围?
- python - Python - 有效地将相同的值分配给列表切片
- algorithm - 清理数据集中的短段
- javascript - 如何使用 Bootstrap Carousel 更改幻灯片?
- angular - 有没有办法使用 3 个或更多 ng-multiselect-dropdowns 过滤表?
- karate - 作为空手道模拟/测试双打输入的 API 响应
- android - Google Play 商店与 Flutter 应用程序不兼容
- xamarin - Xamarin 表单中的时间段禁用按钮
- upgrade - 如何将 Filecoin Lotus 升级到最新版本?