通过连接表续集多态 HasMany/HasOne



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

我想在客户表或地址表中没有目标键或外键/目标键的情况下执行此操作,并依靠 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
      }
    }

我无法弄清楚需要如何设置关联才能完成此操作。任何帮助将不胜感激。

做到这一点的方法实际上是通过一个 belongsToMany 关联,你暗示它是一个 belongsTo。这样,它使用连接表作为默认值。不同之处在于它返回一个数组而不是一个对象,这违背了重点。一个折衷方案可能是,在覆盖 instanceMethod toJSON 时,将数组变形为一个对象,或者创建一个自定义的 setter/getter 在获取关联时执行此操作。

最新更新