2016-06-27 2 views
0

私は2つの関連するデータオブジェクトUserとuserAttributesを持っています。ユーザーhasMany 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.belongsTo(User); 
+0

を経由して、だけでなく、ユーザーにuserAttributeを関連付ける必要がありますか? – Himmators

+0

Sequelizeはこの操作からJOIN文を作成するため、2つのクエリを実行するよりも速くなります。 –

関連する問題