sequelize return 手动定义连接的关联 table

sequelize return association of manually defined join table

我正在将 Sequelize 与 Postgres 结合使用。我的两个 table(estimatorListsubcontractor)由手动定义的 table(estimatorSubsList)连接。

db.subcontractor.belongsToMany(db.estimatorList, { through: db.estimatorSubsList });
db.estimatorList.belongsToMany(db.subcontractor, { through: db.estimatorSubsList });

estimatorSubsList 有一个 id 和其他字段,但它也通过

关联到 contact
db.contact.hasMany(db.estimatorSubsList);

当我在数据库中查询具有特定 ID 的 estimatorList 和 return 时,与此关联的 subcontractor(以及与分包商关联的 table)-

db.estimatorList.findById(estimatorListId, {include:  [ { 
            model: db.subcontractor, 
            include: [  db.location, etc, etc ]
     }
    ]} )

return所有信息都是正确的。它还会自动 returns estimatorSubsList 与每个 subcontractor 对象内的 contactId 。例如:

estimatorSubsList: 
{ contactId: 1
  createdAt: ""
  estimatorListId: 1
  id:2
  otherFields:false
  subcontractorId: 2
  updatedAt:"" 
}

我的问题是,是否可以不仅获取contactId,还获取整个联系人记录本身?我不确定如何更改正在 returned 的默认信息,或者这是否可能。我试过包含 estimatorSubsList 模型并从中包含 contact,但我根本不喜欢尝试包含 estimatorSubsList

大家干杯

直通关系 table 不可能有关联。相反,您应该将其建模为单独的模型并将其包含在内:

EstimatorList.findAll({
  include: [{
    model: EstimatorSubsList,
    include: [Contact, Subcontractor]
  }]
})

确保在两个方向上都设置了所有关联。