2016-12-01 2 views
1

Я пытаюсь добавить отношение многих ко многим через явно созданную таблицу соединений, используя Sequelize и Postgresql.Sequelize Duplicate Key Constraint Violation

таблицы по обе стороны отношений связаны, как это:

Shop.belongsToMany(models.user, {through: 'visits' }) 
User.belongsToMany(models.shop, {through: 'visits' }) 

И таблица первичного ключа посещения стык определяется следующим образом:

id: { 
type: DataTypes.INTEGER, 
primaryKey: true, 
autoIncrement: true // Automatically gets converted to SERIAL for postgres 
} 

Когда я пытаюсь вставить в визитах Я получаю следующую ошибку:

ERROR: duplicate key value violates unique constraint "visits_shopId_userId_key" 
DETAIL: Key ("shopId", "userId")=(1, 12) already exists. 

После выполнения pg_dump у меня есть tr чтобы удалить ограничение составного ключа, добавив ограничение: false для моделей, но я все еще получаю ошибку.

(я бросил таблицы и resynced несколько раз во время процесса отладки)

ответ

1

После рыть вокруг Sequelize issues, оказывается, что удаление ограничения на N: M составного ключа легко исправить.

Сквозное ключ может принимать объект с unique: false свойством:

Shop.belongsToMany(models.user, { 
    through: { 
     model: 'visits', 
     unique: false 
    }, 
    constraints: false 
});