Я пытаюсь выяснить, как N: M работает в сиквелизе, и у меня проблема с заполнением сквозной таблицы.
Итак, у меня есть следующие модели:
Product / Category models
'use strict';
module.exports = (sequelize, DataTypes) => {
const Category = sequelize.define('Category', {
name: DataTypes.STRING
}, {});
return Category;
};
module.exports = (sequelize, DataTypes) => {
const Product = sequelize.define(
'Product',
{
name: DataTypes.STRING,
price: DataTypes.INTEGER,
description: DataTypes.TEXT,
inStock: DataTypes.BOOLEAN
},
{}
)
Product.associate = function(models) {
// associations can be defined here
models.Product.belongsToMany(models.Category, {
through: 'Product_categories'
})
models.Category.belongsToMany(models.Product, {
through: 'Product_categories'
})
}
return Product
}
Это создает таблицу "Product_categories" в моей базе данных с идентификатором categoryId и productId. Допустим, у меня есть игра как продукт, которая относится к нескольким категориям (скажем, ps4 и xbox).
Как на самом деле заполнить таблицу «Product_categories» и связать продукт (игру) с категориями с помощью Id 1 и 2 (playstation и xbox).
Я все еще разбираюсь в Sequelize и ORM в целом, поэтому я немного застрял. Я должен добавить что-то в реальную модель? Или я справлюсь с этим в процессе создания продукта? Я так растерялся> <</p>
Я прочитал всю документацию, но, если честно, я просто немного запутался, поэтому я надеялся, что кто-нибудь сможет мне это объяснить.
Кроме того, это это маршрут, который я использую для создания указанного продукта:
router.post('/product', async (req, res, next) => {
try {
const { name, price, description, inStock } = req.body
const createdProduct = await Product.create({
name,
price,
description,
inStock
})
res.send(createdProduct)
} catch (error) {
next(error)
}
})
Помощь очень ценится! Спасибо !!