У меня есть три таблицы: survey, survey_owners (присоединяемая таблица), пользователи. Обзоры, естественно, имеют названия и принадлежат пользователям. Пользователь может иметь несколько опросов, а опрос может принадлежать нескольким пользователям (отношение «многие ко многим»).
У меня есть уникальная настройка ограничения в таблице survey_owners, поэтому нет дубликатов, но теперь необходимо выяснить, как применить уникальное ограничение для решения следующих задач: пользователь не должен иметь возможность владеть несколькими опросами с одинаковым названием .
При этом уникальное ограничение НЕ МОЖЕТ быть помещено в столбец «заголовок» таблицы опросов, поскольку уникальность должна применяться только в том случае, если пользователь уже владеет опросом с идентичным именем.
Есть идеи, как реализовать это в Sequelize миграции и / или модели (ях)?
Текущий файл миграции для survey_owners
'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('survey_owners', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
surveys_id: {
type: Sequelize.INTEGER,
onDelete: 'CASCADE',
references: {
model: 'surveys',
key: 'id'
}
},
users_id: {
type: Sequelize.INTEGER,
references: {
model: 'users',
key: 'id'
}
},
createdAt: {
allowNull: false,
type: Sequelize.DATE,
field: "created_at"
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE,
field: "updated_at"
}
})
.then(() => {
return queryInterface.addConstraint('survey_owners', ['surveys_id', 'users_id'], {
type: 'unique',
name: 'survey_owners'
});
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('survey_owners');
}
};