0

我正在尝试更新模型文件中具有多对多关系的表之间的关系。我目前在尝试使用关系必须是唯一的默认性质的命令时遇到错误。因此,我想进行简单的调整,将属性添加到我belongsToMany的 with 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'})
        },
4

1 回答 1

2

不知道这是否是您的问题,但 sequelize-climodel:create以旧方式生成模型定义。classMethods自 sequelize v4 起已被弃用。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;
};
于 2017-06-20T05:15:46.290 回答