Sequelize Polymorphic HasMany / HasOne通过连接表

时间:2017-01-05 00:24:52

标签: postgresql sqlite sequelize.js

我有一个Customer表,一个Address表和一个名为CustomerAddress的连接表。 客户需要发货地址,账单地址,默认地址,并且所有客户的地址都需要在字段addresses中访问,这是因为地址表是多态的。

我想在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
      }
    }

我无法弄清楚如何设置关联以实现此目的。非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

实现此目的的方法实际上是通过belongsToMany关联,你暗示它是一个belongsTo。这样它使用连接表是默认的。不同之处在于它返回一个数组而不是一个对象,这会破坏这一点。折衷方案可能是当覆盖instanceMethod toJSON时,将数组转换为对象,或者在获取关联时创建自定义setter / getter。