Sequelize where语句外表

时间:2015-03-21 20:37:58

标签: javascript node.js sequelize.js

我有以下设置:

var Module = sequelize.define('module', {
    id: DataTypes.INTEGER,
    name: DataTypes.STRING,
    description: DataTypes.STRING,
    category_id: DataTypes.STRING,
    module_type_id: DataTypes.STRING,
    gives_score: DataTypes.INTEGER,
    duration: DataTypes.STRING,
    price: DataTypes.STRING

}, {
    freezeTableName: true,})

Organization_has_module

Organization_has_module = sequelize.define('organization_has_module', {
    id: DataTypes.INTEGER,
    module_id: DataTypes.INTEGER,
    organization_id: DataTypes.INTEGER
},{freezeTableName:true});


Module.hasMany(Organization_has_module, {foreignKey: 'module_id'});

现在我试图找到Organization_has_module.organization_id = 1

的所有模块

但我不太清楚该怎么做

我有以下代码:

Module.findAll({include: [{ all: true }],where: {module_type_id: type_id}})
.success(onSuccess).error(onError);

1 个答案:

答案 0 :(得分:2)

我认为这与您的其他问题是同一个问题?

  

Sequelize hasMany through another table

.hasMany()没有引用N:M关系,而是引用1:M。由于您的联接表,您需要.belongsToMany()来引用N:M

Organization.belongsToMany(Module, {
    through: Organization_has_module,
    as: 'module',
    foreignKey: 'module_id'
})
Module.belongsToMany(Organization, {
    through: Organization_has_module,
    as: 'organization',
    foreignKey: 'organization_id'
})