2017-08-02 10 views
0

私はユーザーテーブルから2つの外部キーを作成しました。私はsubscriberId列を取得し、検索クエリ中複数の外部キーを後尾に並べる1列のみを含む

`db.Subscription.belongsTo(db.User, {foreignKey: 'creatorId'}); 
db.Subscription.belongsTo(db.User, {foreignKey: 'subscriberId'});` 

誰かが私がここで間違ってやっているものを見つけるしてくださいすることができ、ここで }, include: [ {model: User, foreignKey: 'creatorId', attributes: ['name', 'role', 'uid', 'imageUrl']}] })

をコードを入力する代わりにcreatorId Subscription.findAll({ where: { subscriberId: req.decoded._idが含まれています。

答えて

0

アソシエーションの名前を設定して、Sequelizeにアソシエーションを含める方が良いアイデアがあるようにしてください。あなたは...

db.Subscription.belongsTo(db.User, { 
    as: 'creator', 
    foreignKey: 'creatorId' 
}); 

db.Subscription.belongsTo(db.User, { 
    as: 'subscriber', 
    foreignKey: 'subscriberId' 
}); 

が次にあなたがそうとして、特定の関連付けを取得するクエリでその名前を使用することができます...関連付けに名前を設定するには、このような何かを行うことができ

Subscription.findAll({ 
    include: { 
    model: User, 
    as: 'creator', 
    attributes: ['name', 'role', 'uid', 'imageUrl'] 
    }, 
    where: { 
    subscriberId: req.decoded._identer 
    } 
}); 

同じテーブルへの関連付けを複数回行うと、名前を設定することでORMがどの関連付けをロードするかを決定するのに役立ちます。レコードの場合、返されるすべてのレコードについて、インスタンス上の.creatorにアクセスして、その関連付けにアクセスできます。

幸運を祈る! :)

+0

ありがとう、多くのディランが働いた。 :) –

関連する問題