Sequelize ORM - обновление таблицы многие ко многим с несколькими ключами - PullRequest
0 голосов
/ 05 мая 2020

У меня есть таблица 'Rule', таблица 'Role' и таблица ассоциаций - 'source_rule_role'.

определил ассоциацию:

models.rule.belongsToMany(models.role, { as : 'roleSources', through : 'source_rule_role' });

обновление таблицы source_rule_role:

// roleIdsArray = [1,3]
return ruleObject.setRoleSources(roleIdsArray, { transaction: tx }).then(function () {
    return ruleObject;
});

, и все работает нормально.

теперь я добавил еще один ключ - rowNum в таблицу source_rule_role (которая теперь имеет 3 PK). Я могу прочитать новую таблицу через orm, но когда я пытаюсь обновить данные с помощью того же кода, или с помощью:

// idAndRowNumArray = [{"id":1,"rowNum":"1"},{"id":3,"rowNum":"1"}]
return ruleObject.setRoleSources(idAndRowNumArray , { transaction: tx }).then(function () {
    return ruleObject;
});

или этого:

return modelService.SequelizeInstance().transaction((tx) => {
    return ruleEntity.setRoleSources([], { transaction: tx })
    .then(() => {
        return Promise.each(idAndRowNumArray, (idAndRowNum) => {
            return ruleEntity.addRoleSources(idAndRowNum.id,
                { through: { rowNum: idAndRowNum.rowNum }, transaction: tx });
        }).return(ruleEntity);
    })
});

, я получаю ошибка агрегирования.

...