2016-06-27 139 views
0

我有兩個關聯的數據對象,User和userAttributes。用戶擁有許多userAttributes。按關聯查找項目?

我希望找到在userAttributes中具有相關值的用戶。首先,我想我可以像這樣搜索相關表格:

userAttribute.findOrCreate({where: {'name': 'fbprofile', 'value': profile.id }}) 
     .spread((userAttribute, created) => { 
      if(created){...}else{...} 
     }) 

但我意識到我仍然需要根據關聯來查找用戶。

有沒有辦法根據關聯找到記錄?

回答

0

您可以輕鬆使用eager loading

userAttribute.findOrCreate({ 
 
    where: {'name': 'fbprofile', 'value': profile.id }, 
 
    include: [ User ] 
 
}) 
 
.spread((userAttribute, created) => { 
 
    if(created){ 
 
     doSomethingWith(userAttribute.user); 
 
    } 
 
    else{...} 
 
});

請注意,您現在可以訪問userAttribute的財產 「用戶」。

如果userAttribute對象被創建(未找到),您當然也應該創建用戶對象。

編輯:順便問一下,你必須與userAttribute用戶爲好,如果你還沒有這樣做,通過

userAttribute.belongsTo(User); 
+0

這會是更好的性能明智? – Himmators

+0

Sequelize通過此操作創建JOIN語句,因此這比執行兩個查詢要快。 –