Как обрабатывать дополнительные столбцы во многих соединительных таблицах, используя функции setter / getter в sequelize? - PullRequest
0 голосов
/ 27 марта 2020

Вот модели (многие ко многим)

Компания. js

module.exports = (sequelize, DataTypes) => {
  const Company = sequelize.define('Company', {
    company_name: DataTypes.STRING,
  }, {
    timestamps: true,
    underscored: true,
    tableName: 'company',
  });
    Company.belongsToMany(models.Goal, {
      through: 'company_goal_relation', foreignKey: 'company_id', as: 'goal'
    });
  };
  return Company;
};

Цель. js

module.exports = (sequelize, DataTypes) => {
  const Goal = sequelize.define('Goal', {
    goal_name: DataTypes.STRING,
  }, {
    timestamps: false,
    underscored: true,
    tableName: 'goal',
  });
  Goal.associate = function(models) {
    Goal.belongsToMany(models.Company, {
      through: 'company_goal_relation',
      foreignKey: 'goal_id',
      as: 'company',
    });
  };
  return Goal;
};

CompanyGoalRelation. js

'use strict';
module.exports = (sequelize, DataTypes) => {
  const CompanyGoalRelation = sequelize.define('CompanyGoalRelation', {
    company_id: DataTypes.INTEGER,
    goal_id: DataTypes.INTEGER,
    objective: DataTypes.STRING,
    description: DataTypes.TEXT,
  }, {
    timestamps: false,
    underscored: true,
    tableName: 'company_goal_relation',
  });

  CompanyGoalRelation.associate = function(models) {
    CompanyGoalRelation.belongsTo(models.Company, { foreignKey: 'company_id' });
    CompanyGoalRelation.belongsTo(models.Goal, { foreignKey: 'goal_id' });
  };

  return CompanyGoalRelation;
};

Здесь я хочу добавить или обновить дополнительные столбцы соединительной таблицы. То, что я пробовал, приведено ниже.

const { goal, companyId } = req.body;
const company = await Company.findByPk(companyId);
    const goalInstance = await Goal.findOne({
      where: { id: goal.id },
    });
await company.addGoal(goalInstance, {
      through: {
        objective: goal.objective,
        description: goal.description,
      }
    });

Ошибка не возникла, и company_id , goal_id были успешно добавлены, но оба target и description были еще null.

В настоящее время я использую Sequelize (5.6.0) и PostgreSQL. Кто-нибудь может помочь? Спасибо!

...