在sequelize中没有被destroy()清理的多对多关系

时间:2014-03-04 16:57:33

标签: node.js sequelize.js

我有两个模型,用户和角色。

var User = sequelize.define('User', {
    username:       { type:DataTypes.STRING, unique: true, allowNull: false },
    email:          { type:DataTypes.STRING, allowNull: false, unique: true },
    password:       { type:DataTypes.STRING, 
        set: function(v) {
            var salt = bcrypt.genSaltSync(10);
            console.log(v + ' ' + salt);
            var hash = bcrypt.hashSync(v, salt);
            this.setDataValue('password', hash);
        } 
    },
    token:          {type:DataTypes.STRING, allowNull:true, unique: false }
},{
    associate: function(models)
    {
        User.hasMany(models.Role);
    }
});


var Role = sequelize.define('Role', {
    rolename:       { type:DataTypes.STRING, unique: true, allowNull: false }
}, {
    associate: function(models)
    {
        Role.hasMany(models.User);
    }
});

正如您所看到的,用户可以拥有许多角色。这些当然加入了多对多的表格中。

问题是,如果我从数据库中删除用户,如下所示:

    db.User.find( { where: {username:username}, include:[db.Role]} )
        .success( function(user) {
            db.Role.find( {where: {}})
            user.destroy()
                            ...

事实上,用户记录已被销毁,但与该用户相关的角色在RoleUsers表中是孤立的。删除它们的框架中建议的最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

目前,我们支持续集中关系的onDeleteonUpdate限制。然而,目前不适用于许多人。如果您在https://github.com/sequelize/sequelize/issues发布功能请求,我可能有时间快速查看

相关问题