Sequelize hasMany a través de otra mesa

Ok, entonces tengo los siguientes tresmodels

Módulo:

    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}
)

Competencia:

Competence = sequelize.define('competence', {
        id: DataTypes.INTEGER,
        name: DataTypes.STRING,
        organization_id: DataTypes.INTEGER,
        competence_type_id: DataTypes.INTEGER
    },{freezeTableName:true})

Módulo_tiene_competencia:

        Module_has_competence = sequelize.define('module_has_competence', {
    id: DataTypes.INTEGER,
    module_id: DataTypes.INTEGER,
    competence_id: DataTypes.INTEGER,
    score: DataTypes.STRING
},{
    freezeTableName: true}
})

Como puede ver, la relación entre las tablas es unn:m

Así que ahora quiero encontrar todos losCompetence que unaModule tiene:

Entonces creé la siguiente relación:

Module.hasMany(Competence, {through: Module_has_competence, foreignKey: 'module_id'});

Sin embargo, cuando intento ejecutar:

  retrieveById: function (quote_id, onSuccess, onError) {
                Module.find({include: [{ all: true }],where: {id: quote_id}})
                    .success(onSuccess).error(onError);
            }

No devuelve nada. Pero si elimino la relación, solo devuelve elModule

¿Alguien puede decirme qué estoy haciendo mal?

Cuando depuro

Cuando depuro no registra ningún sql tristemente, ¿parece que solo está ignorando la llamada sql?

Respuestas a la pregunta(1)

Su respuesta a la pregunta