【问题标题】:How to add more field in joined table "belongsToMany" in Sequelize?如何在 Sequelize 的连接表“belongsToMany”中添加更多字段?
【发布时间】:2020-05-05 16:53:24
【问题描述】:

我有两张表在续集

  1. 仓库
  2. 产品项

然后我想创建一个连接表名Inventory(productionItemId,warehouseId,qty) 这是我当前的代码:

Warehouse.belongsToMany(ProductItem, {
      as: "productItems",
      through: "inventories",
    });

ProductItem.belongsToMany(models.Warehouse, {
      as: "warehouses",
      through: "inventories",
    });

上面的代码只创建了一个连接表inventories(productionItemId,warehouseId)。我想知道我们如何在库存中添加额外的字段,例如数量等。 感谢您的帮助。 谢谢

【问题讨论】:

    标签: sequelize.js


    【解决方案1】:

    BelongsToMany in the official doc

    引用:

    如果您想在连接表中添加其他属性,您可以在定义关联之前在 sequelize 中为连接表定义一个模型,然后告诉 sequelize 它应该使用该模型进行连接,而不是创建一个新模型:

    class User extends Model {}
    User.init({}, { sequelize, modelName: 'user' })
    class Project extends Model {}
    Project.init({}, { sequelize, modelName: 'project' })
    class UserProjects extends Model {}
    UserProjects.init({
      status: DataTypes.STRING
    }, { sequelize, modelName: 'userProjects' })
    
    User.belongsToMany(Project, { through: UserProjects })
    Project.belongsToMany(User, { through: UserProjects })
    

    要向用户添加新项目并设置其状态,您需要将额外的 options.through 传递给设置器,其中包含连接表的属性

    user.addProject(project, { through: { status: 'started' }})
    

    【讨论】:

      猜你喜欢
      • 2018-08-18
      • 1970-01-01
      • 2021-10-11
      • 2017-05-22
      • 1970-01-01
      • 2021-02-19
      • 2014-10-15
      • 1970-01-01
      • 2011-06-08
      相关资源
      最近更新 更多