sequelize返回手动定义的连接表的关联

时间:2016-09-23 01:11:29

标签: database postgresql sequelize.js model-associations

我正在使用Sequelize和Postgres。我的两个表(estimatorListsubcontractor)由手动定义的表(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并返回与此相关联的subcontractor(以及与子转让商关联的表)时 -

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

它返回所有正确的信息。它还会在每个estimatorSubsList对象内自动返回contactId subcontractor。 EG:

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

我的问题是,是否有可能不仅获得contactId,而且还有整个联系人记录本身?我不确定如何更改返回的默认信息,或者甚至可能。我尝试过包含estimatorSubsList模型并包含contact,但它不希望我尝试包含estimatorSubsList

干杯全部

1 个答案:

答案 0 :(得分:0)

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

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

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