javascript - 需要关于如何在 Sequelize 中填充 "through"表的建议?

标签 javascript node.js postgresql sequelize.js

我试图弄清楚 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/

相关文章:

json - 将 Mongoose 文档转换为 json

ruby-on-rails - Rails 3 上的 Postgres 复合类型

sql - 如何修复 PostgreSQL 中的双重编码?

javascript - 多个请求与 for 循环和每个请求之间的超时

PostgreSQL 中的 SQL 查询问题

javascript - 日期差异并使用 JS 插入同一数组

javascript - 启用日期期间 Javascript 默认日历

javascript - typeahead.bundle.js 如何通过在下拉建议上按 ENTER 开始搜索?

javascript - React JS根据浏览器不活动删除cookie

node.js - nodejs - 使用 fs.createReadStream、requestjs、流式传输和 AWS S3 预签名 url 上传会引发错误