#sequelize.js
#sequelize.js
Вопрос:
Когда 2 модели связаны в отношении «многие ко многим» в Sequelize через таблицу соединений, составной ключ создается из 2 внешних ключей из 2 моделей. В документации sequelize, найденной здесь: https://sequelize.org/master/manual/advanced-many-to-many.html в нем говорится, что можно заставить таблицу иметь идентификатор PrivateKey.
A и C — это 2 модели в отношении «многие ко многим». Таблица / модель соединения — B. Модели A и C определение не имеет значения для этого примера.
//Defining the junction table B with the private key ID
sequelize.define('B', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
}
}, { timestamps: false });
A.belongsToMany(Profile, { through: B });
C.belongsToMany(User, { through: B });
Даже при добавлении моего закрытого ключа ID в эту таблицу уникальное ограничение этих 2 внешних ключей все еще существует. Как мне отключить это ограничение?
Ответ №1:
ОТВЕТ НАЙДЕН
Для любого, кто просматривает веб-страницы в поисках ответа, это просто, вы должны передать unique: false
опцию в сквозной модели.
A.belongsToMany(Profile, { through: { model: B, unique: false}});
C.belongsToMany(User, { through: { model: B, unique: false}});
Комментарии:
1. Могу ли я также использовать пользовательские уникальные столбцы? Допустим, я хочу иметь третий столбец, который не имеет отношения к другой таблице, но должен быть частью уникальности?
2. @rasenkantenstein это довольно просто, так как вам просто нужно определить стандартный «уникальный» индекс с вашими комбинационными массивами столбцов в вашей сквозной модели.