我正在使用Sequelize和Postgres。我的两个表(estimatorList
和subcontractor
)由手动定义的表(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
。
干杯全部
答案 0 :(得分:0)
直通关系表不可能有关联。相反,您应该将其建模为单独的模型,并将其包含在内:
EstimatorList.findAll({
include: [{
model: EstimatorSubsList,
include: [Contact, Subcontractor]
}]
})
确保您在两个方向都设置了所有关联。