2017-01-05 9 views
0

私はCustomerテーブル、Addressテーブル、およびCustomerAddressという名前の結合テーブルを持っています。 お客様は、配送先住所、請求先住所、デフォルト住所を必要とし、addressesのフィールドでアクセス可能である必要があります。これは、住所表が多様であるためです。多態性HasMany/HasOneをJoin TableにSequelize

私は、CustomerテーブルまたはAddressテーブルにターゲットキーまたは外部/ターゲットキーを持たずにこれを行い、CustomerAddressテーブルを使用して、どのアドレスを指定するかを指定します。 :

//CustomerAddress 
    schema = { 
     address_id: { 
     type: Sequelize.INTEGER, 
     unique: 'customeraddress_address' 
     }, 
     // Type of address eg. shipping, default, billing 
     address: { 
     type: Sequelize.STRING, 
     unique: 'customeraddress_address' 
     }, 
     customer_id: { 
     type: Sequelize.INTEGER, 
     unique: 'customeraddress_address', 
     references: null 
     } 
    } 

これを達成するために関連付けを設定する必要はありません。どんな助けでも大歓迎です。

答えて

0

これを行う方法は、実際にはbelongsToManyの関連付けを使用して、それがbelongsToであることを暗示します。この方法では、デフォルトの結合表が使用されます。違いは、オブジェクトの代わりに配列を返すことで、ポイントを破ることです。 instanceMethod toJSONをオーバーライドするときに、配列をオブジェクトにモーフィングするか、アソシエーションがフェッチされたときにこれを行うカスタムセッター/ゲッターを作成するという妥協案があります。