mysql - Sequelize hasMany关联问题

标签 mysql sequelize.js

在我的应用程序中,用户可以有多个 module,它们存储在 user_has_module 表中。这意味着对于每个 user_has_module 行,我想在 module_id 匹配的地方包含 module

模块

Module = sequelize.define('module', {
    academy_id: {
        type: DataTypes.INTEGER,
        primaryKey: true
    },
    module_id: {
        type: DataTypes.INTEGER,
        primaryKey: true
    },
    module_module_type_id: DataTypes.INTEGER,
    sort_number: DataTypes.INTEGER,
    score_to_pass: DataTypes.INTEGER
    }, {
        freezeTableName: true
    })

user_has_module

User_has_module = sequelize.define('user_has_module', {
     user_id: {
        type: DataTypes.INTEGER,
        primaryKey: true
     },
     module_id: {
        type: DataTypes.INTEGER,
        primaryKey: true
     },
     academy_team_id: {
        type: DataTypes.INTEGER,
        primaryKey: true
     },
     academy_id: {
        type: DataTypes.INTEGER,
        primaryKey: true
     },
     sort_number: DataTypes.INTEGER,
     is_complete: DataTypes.INTEGER,
     score_to_pass: DataTypes.INTEGER,
     is_open: DataTypes.INTEGER,
     deadline: DataTypes.DATE
}, {
   freezeTableName: true
})

我的亲戚

User_has_module.belongsTo(Module, {foreignKey: 'module_id'});

现在我想做的是在 module.module_id = user_has_module.module_id 上加入他们。

我的问题是 module 有两个 primary key,当 sequelize 连接这两个表时,它选择 academy_id 作为其主键

我的问题是,有没有办法告诉 Sequelize 在这个关系中它必须从 中选择 primary key module_id >模块?

最佳答案

我认为您不需要名为 User_has_module 的模型。 我假设您有一个名为 User 的模型和一个名为 Module 的模型。

所以你应该设计这样的东西:

var User = sequelize.define("User", {
        name: DataTypes.STRING
    }, {
        classMethods: {
            associate: function(models) {
                User.hasMany(models.Module);
            }
        }
    });

对于您的模块:

var Module = sequelize.define("Module", {
        name: DataTypes.STRING
    }, {
        classMethods: {
            associate: function(models) {
                Module.belongsToMany(models.User);
            }
        }
    });

要让用户使用其模块,您可以这样做:

models.User.findAll({ include: [models.Module]}).then(function(users){
        console.log(users);
    });

希望我答对了您的问题并且对您有所帮助。 干杯

关于mysql - Sequelize hasMany关联问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30325193/

相关文章:

mysql - 使用 SELECT 语句进行更新,但在每次更新时重新选择

sequelize.js - sequelize 实例中的 set 和 add 方法有什么区别?

sequelize.js - 我想查找记录使用像这样的操作符 : field&16

javascript - Sequelize - 如何搜索多列?

sequelize.js - 使用 sequelize 插入时如何填充数据库默认值?

php - MYSQL 通过搜索 token 问题自定义查询顺序

MYSQL 根据 where 子句和 Join 更新值

php - PDO 查询在本地运行,而不是在服务器上运行

php - 找到 0 条记录

sequelize.js - findAndCountAll 计数得到一个比实际返回数据更大的数字