gpt4 book ai didi

node.js - 在 sequelize 中的 destroy() 中没有清理多对多关系

转载 作者:行者123 更新时间:2023-12-03 22:42:53 26 4
gpt4 key购买 nike

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

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 表中是孤立的。删除它们的框架中推荐的最佳实践是什么?

最佳答案

目前我们支持 onDeleteonUpdate 对 sequelize 中的关系的约束。但是 in 目前不适用于多对多。如果您在 https://github.com/sequelize/sequelize/issues 上发布功能请求,我可能很快就会有时间查看它

关于node.js - 在 sequelize 中的 destroy() 中没有清理多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22178159/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com