В настоящее время я использую Express с Sequelize + MySQL, и мне было интересно, как лучше всего решить эту проблему.Я прошу прощения, если это основной вопрос, так как я довольно новичок в Sequelize и даже в базах данных SQL в целом.
У меня есть модель User
, например,
export default db.define('User', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
email: {
type: Sequelize.STRING,
allowNull: false,
},
createdAt: {
type: Sequelize.DATE,
defaultValue: Sequelize.NOW,
},
updatedAt: {
type: Sequelize.DATE,
defaultValue: Sequelize.NOW,
},
});
Тогда ятакже есть другая модель Shoe
, например, так:
export default db.define('Shoe', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
size: {
type: Sequelize.INTEGER,
allowNull: true,
},
quality: {
type: Sequelize.ENUM('Brand New', 'Used', 'Collector Item'),
allowNull: false,
},
createdAt: {
type: Sequelize.DATE,
defaultValue: Sequelize.NOW,
},
updatedAt: {
type: Sequelize.DATE,
defaultValue: Sequelize.NOW,
},
});
Затем я определяю связь между этими двумя.
User.hasMany(Shoe);
Shoe.belongsTo(User);
Однако проблема в том, что она «создает»обувь, и это приводит к дублированию.Я в основном хочу таблицу под названием «Обувь», в которой есть обувь, а затем пользователь просто ссылается на идентификаторы, основываясь на том, какие у нее ботинки.
Не уверен, что это лучший способ сделать это, особенно еслипользователь владеет несколькими ботинками.В псевдо я полагаю, что я хотел бы что-то вроде массива идентификаторов обуви, таких как shoes: [1, 2, 3, 4]
, который при запросе затем каким-то образом просматривается в таблице обуви и вставляется в ответ пользователя.
Очевидно, я могу что-то сделатькак и в сыром SQL, но я полагаю, что должен быть лучший способ приблизиться к этому, учитывая, сколько сил имеет Sequelize.
Надеюсь, кто-то может дать какой-то совет и помощь по этому поводу!