首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >续订关联-关联表

续订关联-关联表
EN

Stack Overflow用户
提问于 2020-07-27 11:23:32
回答 1查看 454关注 0票数 0

我正在使用SequelizePostgreSQLNode JS

我把我的数据库设计成这样

表A是autoincremented

  • Table B => ID是autoincremented

  • Table C => ID是autoincremented

  • Table联系=> ID是autoincremented

在关联表中,我为表A、表B和表C ID添加外键。

所以关联表看起来是这样的:

| id | tableA_id | tableB_id | tableC_id |

A关联:

代码语言:javascript
复制
Table A => Has **Many** Table **B**.

Table A => Has **Many** Table **C**.

B关联:

代码语言:javascript
复制
Table B => Has **One** Table **A**.

Table B => Has **Many** Table **C**.

C关联:

代码语言:javascript
复制
Table C => Has **One** Table **A**.

Table C => Has **One** Table **B**.

话虽如此,我仍有这样的联想:

代码语言:javascript
复制
 TableAssociationModel.hasMany(TableAModel, {
    as: 'TableAModel',
    foreignKey: 'tableA_id',
    targetKey: 'tableA_id',
  });
  TableAssociationModel.hasMany(TableBModel, {
    as: 'TableBModel',
    foreignKey: 'tableB_id',
    targetKey: 'tableB_id',
  });

  TableAssociationModel.hasMany(TableCModel, {
    as: 'TableCModel',
    foreignKey: 'tableC_id',
    targetKey: 'tableC_id',
  });

数据库示例:

代码语言:javascript
复制
| id | tableA_id | tableB_id | tableC_id |
|  1 |     2     |      1    |      1    |
|  2 |     2     |      1    |      2    |
|  3 |     2     |      2    |      3    |

如果我搜索表C= 1,我将得到我的关联,但是如果我搜索ID = 2,下面的表A或表B数据将被传递。

此外,我在表中搜索(A、B和C),并希望在表协会中返回我的关联。

有什么帮助吗?

谢谢提前,我希望我解释得足够好,任何疑问请让我知道,真的想了解这是如何运作的。

PS:我是个三年级学生,别对xD太苛刻了

EN

回答 1

Stack Overflow用户

发布于 2020-07-29 09:03:40

所以我想明白了:

代码语言:javascript
复制
TableAModel.hasMany(TableAssociationModel, {
    as: 'relationsData',
    foreignKey: 'tableA_id',
    sourceKey: 'tableA_id',
  });
  
TableAssociationModel.belongsTo(TableAModel, {
    as: 'tableAData',
    foreignKey: 'tableA_id',
    sourceKey: 'tableA_id',
  });

 TableBModel.hasMany(TableAssociationModel, {
    as: 'relationsData',
    foreignKey: 'tableB_id',
    sourceKey: 'tableB_id',
  });

  TableAssociationModel.belongsTo(TableBModel, {
    as: 'tableBData',
    foreignKey: 'tableB_id',
    sourceKey: 'tableB_id',
  });

  TableCModel.hasMany(TableAssociationModel, {
    as: 'relationsData',
    foreignKey: 'tableC_id',
    sourceKey: 'tableC_id',
  });

  TableAssociationModel.belongsTo(TableCModel, {
    as: 'tableCData',
    foreignKey: 'tableC_id',
    targetKey: 'tableC_id',
  });

我的联想只有一条路,而且做错了。

知道了,即使我想在TableAssociationModel,中搜索,我的主要模型是表A,B和C,所以我需要把它们当作更重要的,并告诉后遗症他们是主要的。

顺便说一句,如果您想看到在Sequelize中生成的查询,可以使用:

代码语言:javascript
复制
DEBUG=sequelize* node ***your/file.js***

例如,使用/file.js <=的文件:

代码语言:javascript
复制
TableAModel.findAll({

})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63114269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档