首页 > 解决方案 > Sequelize 从外键获取 N:M 关联

问题描述

我有一个架构,其中我有一个资产,它有很多威胁,每个威胁都有很多对策。我想要做的是给定资产的 id 以获取该资产的威胁列表以及每个威胁的列表对策。我怎样才能做到这一点?

我认为我的代码不会提供任何帮助,但无论如何你都可以:

Asset.belongsToMany(Threat, { through: 'asset-threat' });
Threat.belongsToMany(Asset, { through: 'asset-threat' });

Countermeasure.belongsToMany(Threat, { through: 'countermeasure-threat' });
Threat.belongsToMany(Countermeasure, { through: 'countermeasure-threat' });

所有协会的东西都在这里。我让 sequelize 处理与外键无关的所有事情。

编辑

我试图做的事情不起作用,但很好地解释了我想要实现的目标如下:

const asset = await Asset.findOne({ where: { id } });

return await asset.getThreats({
    include: Countermeasure
});

标签: javascriptsqlpostgresqlrestsequelize.js

解决方案


至少您应该将include选项值指示为数组:

return await asset.getThreats({
    include: [Countermeasure]
});

推荐阅读