2016-09-23 38 views
1

我使用Postgres的Sequelize。我的兩個表格(estimatorListsubcontractor)通過手動定義的表格(estimatorSubsList)連接。手動定義連接表的續集返回關聯

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

estimatorSubsList都有一個id等領域,但它也通過

db.contact.hasMany(db.estimatorSubsList); 

關聯contact當我在數據庫中查詢estimatorList與特定的ID,並返回與分包商相關的subcontractor(和表)與此相關聯 -

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

它返回所有正確的信息。它也會在每個subcontractor對象內自動返回estimatorSubsListcontactId。 EG:

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

我的問題是,是否有可能不僅得到的ContactID,但整個聯繫人記錄本身?我不確定如何更改正在返回的默認信息,或者甚至可能。我試過包括estimatorSubsList模型,包括contact,但它不喜歡我試圖包含estimatorSubsList

乾杯全部

+0

可以使用屬性選項嵌套包含和修改屬性。這是所有記錄 – felixfbecker

+0

您好@felixfbecker, 我已經通過在過去幾天的文檔,似乎無法找到解決方案。有一個標題我應該專門研究?我瞭解嵌套,但我不知道如何改變自動返回的內容即。上面的json,當我查詢estimatorList。我不會將estimatorSubsList本身稱爲它,而是將其與分包商一起退回。我希望在這部分回報中包含聯繫人。 感謝您的幫助 – Porksoda

+0

請幫忙@felixfbecker,我仍然無法找到解決方案。我想返回與我的表關聯的db.contact - db.estimatorSubsList。掙扎! 我看到如何使用**通過**來更改屬性,但我仍然無法找到如何返回與通過/連接表關聯的db.contacts模型。 – Porksoda

回答

0

直通關係表不可能有關聯。相反,你應該把它建模爲一個單獨的模型,並把它作爲這樣的:

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

請確保您有在兩個方向上建立的所有關聯。

+0

謝謝!頭痛解決了!我按照你的說法做了,重新構建了我的模型和關聯,並使用了嵌套包含。再次感謝@felixfbecker – Porksoda