У меня есть таблица '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);
})
});
, я получаю ошибка агрегирования.