我在 Postgres 中使用 Sequelize。我的两个表( 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
。例如:estimatorSubsList:
{ contactId: 1
createdAt: ""
estimatorListId: 1
id:2
otherFields:false
subcontractorId: 2
updatedAt:""
}
我的问题是,是否有可能不仅获得 contactId,还可以获得整个联系人记录本身?我不确定如何更改返回的默认信息,或者是否可能。我试过包含
estimatorSubsList
模型并从中包含 contact
,但它根本不喜欢我尝试包含 estimatorSubsList
。干杯
最佳答案
直通关系表不可能有关联。相反,您应该将其建模为一个单独的模型并将其包含在内:
EstimatorList.findAll({
include: [{
model: EstimatorSubsList,
include: [Contact, Subcontractor]
}]
})
确保在两个方向上都设置了所有关联。
关于database - sequelize 返回手动定义的连接表的关联,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39651082/