我正在尝试更新模型文件中具有多对多关系的表之间的关系。我目前正在使用一个命令错误,我试图使用默认的关系必须是唯一的。因此,我想简单地调整使用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'})
},
答案 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;
};