gpt4 book ai didi

node.js - sequelize.js N :M through relationships, 删除级联

转载 作者:搜寻专家 更新时间:2023-10-31 23:48:30 26 4
gpt4 key购买 nike

我正在使用 Sequelize.js v1.7.9。使用 Express.js 4

我有以下关系:

User hasMany UserRoles
User hasMany Roles through UserRoles

UserRoles belongsTo user
UserRoles belongsTo role

Role hasMany UserRoles
Role hasMany Users through UserRoles

在 Rails 中,我们可以简单地说 dependent: :destroy,当 UserRole 被删除时,相关的 UserRole 行是也被销毁了,但是这不适用于 Sequelize.js。

我正在使用迁移显式创建连接表,我在连接表上设置了 onDelete: 'CASCADE'。但它的行为并不像它应该的那样。

TL;DR, 如何让 delete CASCADE 像 Rails ActiveRecord dependent: :destroy

一样工作

我的代码如下:

用户.js:

module.exports = function (sequelize, DataTypes) {
var user = sequelize.define('user',
{
name: DataTypes.STRING,
},
{
classMethods: {
associate: function (models) {
user.hasMany(models.role, {through: models.userRole})
user.hasMany(models.userRole, {onDelete: 'CASCADE', hooks: true})
}
}
}
)
return user
}

角色.js:

module.exports = function (sequelize, DataTypes) {
var role = sequelize.define('role',
{
name: DataTypes.STRING,
},
{
classMethods: {
associate: function (models) {
role.hasMany(models.userRole, {onDelete: 'CASCADE', hooks: true})
role.hasMany(models.user, {through: models.userRole})
}
}
}
)
return role
}

userRole.js:

module.exports = function (sequelize, DataTypes) {
var userRole = sequelize.define('userRole',
{
userId: DataTypes.INTEGER,
roleId: DataTypes.INTEGER,
},
{
classMethods: {
associate: function (models) {
userRole.belongsTo(models.user)
userRole.belongsTo(models.role)
}
}
}
)
return userRole
}

谢谢

最佳答案

不幸的是,n:m 级联在 1.7 中不能正常工作。它们在 2.0 中默认添加

关于node.js - sequelize.js N :M through relationships, 删除级联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24613822/

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