postgresql - 通过连接表将多态 HasMany/HasOne 序列化

标签 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
      }
    }

我无法弄清楚需要如何建立关联才能实现这一目标。任何帮助是极大的赞赏。

最佳答案

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

关于postgresql - 通过连接表将多态 HasMany/HasOne 序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41475426/

相关文章:

sql - 如何优化PostgreSQL排行榜窗口函数查询

sql - 将我的列转换为 postgresql 中的行而不创建任何扩展

postgresql - 当更新前后字段都相等时,postgres 真的会更新页面文件吗?

node.js - 分享 Sequelize 模型的最佳方式

sql-server - 使用 Sequelize 将对象传递到钩子(Hook)中

ruby-on-rails - 迁移运行时在 db/structure.sql 上删除了 Postgresql 扩展

nhibernate - 单元测试 NHibernate w/SQLite 和 DateTimeOffset 映射

python - 用于保护明文密码和 sqlite 数据库的 webapp 文件夹结构

javascript - 预填充 iPhone Safari SQLite DB

node.js - Sequelize插入连接表(多对多)