我试图弄清楚 N:M 在 Sequelize 中是如何工作的,但我在填充“通过”表时遇到了问题。
所以我有这些模型:
产品/类别模型
'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
}
这会在我的数据库中创建具有 categoryId 和 productId 的“Product_categories”表。
假设我有一个游戏作为产品,它属于多个类别(比如 ps4 和 xbox )。
我如何实际填充“Product_categories”表并将产品(游戏)与 Id 1 和 2( playstation 和 xbox )的类别相关联。
我还在总体上弄清楚 Sequelize 和 ORM,所以这就是我有点卡住的地方。
我应该在实际模型中添加一些东西吗?还是我在产品创建的 route 处理它?我好纠结><
我阅读了所有文档,但老实说我有点困惑,所以我希望有人可以向我解释这一点。
此外,这是我用来创建上述产品的路线:
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)
}
})
非常感谢帮助!谢谢 !!
最佳答案
你可以试试:
await createdProduct.addCategory(category)
或者
await createdProduct.addCategorys(categories)
见 Many-to-many associations
关于javascript - 需要关于如何在 Sequelize 中填充 "through"表的建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60774026/