Я использую Sequelize в своем проекте. Это две модели:
const User = db.define('user', {
name: Sequelize.STRING,
password: Sequelize.STRING
})
const Product = db.define('product', {
name: Sequelize.STRING,
price: Sequelize.INTEGER
})
Теперь пользователи могут приобретать продукты, и у меня есть настройки, как показано ниже:
Product.belongsToMany(User, {through: 'UserProducts'})
User.belongsToMany(Product, {through: 'UserProducts'})
У меня также есть эта таблица UserProducts с дополнительным столбцом.
const UserProducts = db.define('UserProducts', {
status: Sequelize.STRING
})
Sequelize создает составной ключ с комбинацией userId и productId и разрешает только одну запись с комбинацией userId и productId. Так, например, userId 2 и productId 14.
Это проблема для меня, потому что иногда люди хотят купить несколько раз. Мне нужен один из следующих сценариев для работы:
Не используйте составной ключ, вместо этого используйте совершенно новый столбец автоинкремента, используемый в качестве ключа в UserProducts.
Вместо того, чтобы создавать ключ только с userId и productId, позвольте мне добавить еще один столбец в ключ, такой как status
, чтобы уникальный ключ был комбинацией трех.
Я хочу использовать ассоциации, так как они предоставляют много мощных методов, но хочу изменить уникальный ключ для работы таким образом, чтобы я мог добавить несколько строк с одинаковой комбинацией идентификатора пользователя и идентификатора продукта.
И так как мои модели / база данных уже запущены, мне нужно будет использовать миграции, чтобы внести это изменение.
Любая помощь по этому вопросу высоко ценится.