Вот модели (многие ко многим)
Компания. 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. Кто-нибудь может помочь? Спасибо!