我在 Postgres 中使用 Sequelize。我的两个表( 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。例如:
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/

10-15 21:26