首页 > 解决方案 > Sequelize - 是否有双向关联?

问题描述

在 Sequelize ORM http://docs.sequelizejs.com/的文档中,我没有看到对模型之间双向关联的任何引用,正如我们从 Java 的 Hibernate 或 PHP 的 Doctrine 中所知道的那样。

那么,Sequelize 不支持开箱即用的双向关联?

标签: javascriptormassociationssequelize.js

解决方案


这取决于您所说的开箱即用的含义。

Sequelize 中的双向关联是通过在每个模型上定义两个单一关联来实现的。据我所知,没有其他办法。

例如。我们有一个用户模型和一个帖子模型。Post 模型持有一个来自 User 的名为 UserId 的外键,这是一个一对多的关联。要双向实现这一点,您应该在 User Model 和 Post 模型上添加一个关联,如下所示。

User.associate = function(models) {
    models.User.hasMany(models.Post, {
        foreignKey:"UserId"
    })
}

Post.associate = function(models)  {
    models.Post.belongsTo(models.User, {
        foreignKey:"UserId"
    })
}

类似的方法适用于任何类型的关联类型。我知道这似乎不是最方便的事情。


推荐阅读