Sequelize - findOrCreate na tabela "através", na associação belongsToMany

Primeiro de tudo, eu sou bastante novo no Node.JS e ainda mais novo no Sequelize, e isso me incomoda há um tempo. Eu tenho as seguintes entidades de modelo:

Match.js

module.exports = function(sequelize, DataTypes) {
    var Match = sequelize.define('Match', {
            matchId: {
                type: DataTypes.BIGINT,
                field: 'match_id'
            },
            server: {
            type: DataTypes.STRING
            },
            (...)
            rankedBoo: {
                type: DataTypes.BOOLEAN,
                field: 'ranked_boo'
            }
    }, {
        classMethods: {
            associate: function(models) {
                Match.belongsToMany(models.Summoner, {as: 'Participants', through: 'SummonerMatch'});
            }
        },
        freezeTableName: true,
        underscored: true
    });

  return Match;
};

Summoner.js

module.exports = function(sequelize, DataTypes) {
  var Summoner = sequelize.define('Summoner', {
        summonerId: {
            type: DataTypes.INTEGER,
            field: 'summoner_id'
        },
        server: {
            type: DataTypes.STRING
        },
        summonerName: {
            type: DataTypes.STRING,
            field: 'summoner_name'
        },
        mainChampion: {
            type: DataTypes.INTEGER,
            field: 'main_champion'
        }
    }, {
        classMethods: {
            associate: function(models) {
                Summoner.belongsToMany(models.Match, {as: 'SummonerMatches', through: 'SummonerMatch'});
                Summoner.hasOne(models.RankedStats);
                Summoner.hasMany(models.RankedHistory, { as: { singular: 'RankedHistory', plural: 'RankedHistory' }});
            }
        },
        freezeTableName: true,
        underscored: true
    });


  return Summoner;
};

SummonerMatch.js

module.exports = function(sequelize, DataTypes) {
    var SummonerMatch = sequelize.define('SummonerMatch', {
        championId: {
            type: DataTypes.INTEGER,
            field: 'champion_id'
        },
        role: {
            type: DataTypes.STRING
        },
        (...)
        sightWardsBought: {
            type: DataTypes.INTEGER,
            field: 'sight_wards_bought'
        }
    }, {
        freezeTableName: true,
        underscored: true
    });

  return SummonerMatch;
};

Agora estou tentando criar uma nova correspondência e associá-la a um invocador, e estou fazendo o seguinte:

summoner.createSummonerMatch(matchInfo, matchDetails).then(
    function () {
        callback();
        return null;
});

OndematchInfo contém os atributos da entidade "Corresponder" ematchDetails contém os atributos da entidade "SummonerMatch".

Está tudo bem, mas não verifica se a correspondência já existe, então estou tentando usarfindOrCreate aqui.

models.Match.findOrCreate({
    include: [ {model: models.Summoner, as: 'Participants'}],
    where: { matchId: matchInfo.matchId, server: matchInfo.server },
    defaults: {
        matchMode: queueType,
        matchDate: new Date(matchCreation),
        matchDuration: matchDurationInSeconds,
        rankedBoo: rankedBoo
        }
    }).spread(function(match, created) {
        console.log(created)
});

Isso quase faz o truque (cria uma nova linha na tabela Match, mas não no SummonerMatch). Como devo proceder para inserir informações no SummonerMatch também? Tentei algumas coisas (adicionando atributos aos padrões, alternando-os para uma matriz, aprimorando com o include, mas sem sucesso até agora.

Estou perdendo alguma coisa, mas não consigo descobrir o que. Qualquer ajuda é muito apreciada :)

[EDIT] Caso alguém venha aqui procurando respostas sobre como fazê-lo, isso funciona, mas não tenho certeza se é a melhor abordagem:

models.Match.findOrCreate({
    include: [ {model: models.Summoner, as: 'Participants'}],
    where: { matchId: matchInfo.matchId, server: matchInfo.server },
    defaults: {
        matchMode: queueType,
        matchDate: new Date(matchCreation),
        matchDuration: matchDurationInSeconds,
        rankedBoo: rankedBoo
        }
    }).spread(function(match, created) {
        match.addParticipant(summoner, matchDetails).then(
            function () {
                console.log('Done')
            }
        )
});

Ele está criando uma correspondência, se não existir, e adicionando um participante posteriormente. Não existe uma maneira de fazer tudo de uma vez?

questionAnswers(0)

yourAnswerToTheQuestion