sequelize - 如何更新n-m关系中的关联,包括连接表

时间:2016-12-25 17:32:56

标签: mysql sequelize.js

我有两个表(用户,标签)通过连接实体(user_tag)以belongsToMany关系相互连接:

sequelize.define('tag', {
    id: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      primaryKey: true
    },
    type: {
      type: DataTypes.STRING
    }
  }, {
       classMethods: {
            associate: function (models) {
            this.belongsToMany(models.user, {as: "users", through: models.user_tag });
  },
  }

}

sequelize.define('user', {
    id: {
      type: DataTypes.INTEGER,
      autoIncrement: true,
      primaryKey: true
    },
    name: {
      type: DataTypes.STRING,
    },{
    classMethods: {
        associate: function (models) {
         this.belongsToMany(models.tag, { as:"tags", through: models.user_tags });
        }
    }
}


sequelize.define('user_tag', {
    type: DataTypes.STRING,
    param1: DataTypes.INTEGER,
    priority: DataTypes.INTEGER
  }, {
    freezeTableName: true,
    paranoid: true
  });

现在,用户可以更新他的所有标签,包括加入实体(user_tag)的所有特定信息,例如priority和param1。

我知道setAssociation [例如user.setTag(myTags)],但是,如何设置匹配的param1和优先级属性?

1 个答案:

答案 0 :(得分:0)

根据Sequelize's documentation添加与belongsToMany的新关系时,您可以将其他属性传递给选项对象,并将该数据添加到直通模型中。

user.setTag(myTags, { param1: 1, priority: 1 });