Sequelize CLI Migration classMethod Change

时间:2016-09-03 14:45:22

标签: sequelize.js sequelize-cli

我正在尝试更新模型文件中具有多对多关系的表之间的关系。我目前正在使用一个命令错误,我试图使用默认的关系必须是唯一的。因此,我想简单地调整使用belongsToMany向我的unique: false添加属性,但我不确定在迁移文件中使用的格式是否合适。 queryInterface命令似乎没有任何关于更改classMethod的文档。我甚至需要迁移文件吗?

我想改变这个:

classMethods: {
        associate: function(db) {
            User.belongsToMany(db.Organization, { through: 'member', foreignKey: 'user_id'}),
            User.belongsToMany(db.Team, { through: 'member', foreignKey: 'user_id'})
        },

到此(unique: false

classMethods: {
        associate: function(db) {
            User.belongsToMany(db.Organization, { through: 'member', unique: false, foreignKey: 'user_id'}),
            User.belongsToMany(db.Team, { through: 'member', unique: false, foreignKey: 'user_id'})
        },

1 个答案:

答案 0 :(得分:2)

不知道这是不是你的问题,但是sequelize-cli的model:create以旧的方式生成模型定义。自{sequelize v4}起,classMethods已被弃用。 http://docs.sequelizejs.com/manual/tutorial/upgrade-to-v4.html

旧方式:

module.exports = function(sequelize, DataTypes) {
  var Profile = sequelize.define('profile', {
    bio: DataTypes.TEXT,
    email: DataTypes.STRING
  }, {
    classMethods: {
      associate: function(models) {
        // associations can be defined here
        Profile.belongsTo(models.user);
      }
    }
  });
  return Profile;
};

新方式:

module.exports = function(sequelize, DataTypes) {
  var Profile = sequelize.define('profile', {
    bio: DataTypes.TEXT,
    email: DataTypes.STRING
  });

  Profile.associate = function(models) {
    Profile.belongsTo(models.user);
  };

  return Profile;
};