gpt4 book ai didi

node.js - Sequelize : Able to create even foreignKey is deleted (paranoid type)

转载 作者:行者123 更新时间:2023-12-03 22:32:47 25 4
gpt4 key购买 nike

问题描述
我创建了 2 个表, userroleuser 中的字段之一是 roleId ,它指向 role 表。
两个表 paranoid 都等于 true
如果 role.id 2 被 [paranoid] 删除(deletedAt 有值),我仍然可以在 roleId: 2 表中插入 user
[更新]:即使 models.update 也可以更新 roleId: 2文件
用户模型.js

class User extends Model {}

User.init({
username: {
type: DataTypes.STRING,
allowNull: false,
unique: true,
}
}, {
sequelize,
tableName: 'user',
timestamps: true,
paranoid: true
})

export default User
角色模型.js
class Role extends Model {}

Role.init({
name: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
}, {
sequelize,
tableName: 'role',
timestamps: true,
paranoid: true
})

export default Role
索引.js
import RoleModel from './RoleModel'
import UserModel from './UserModel'

RoleModel.hasOne(UserModel, {
foreignKey: {
name: 'roleId',
fieldName: 'id',
allowNull: true
}
})
UserModel.belongsTo(RoleModel, {
as: 'role'
})

export {
RoleModel,
UserModel
}
环境
  • Sequelize 版本:6.3.5
  • Node.js 版本:v12.18.0
  • 操作系统:MacOS
  • 方言:mysql
  • 最佳答案

    当然,您可以指定一个软删除的记录 id,因为该记录仍然存在于 DB 中,如果您在获取用户和角色时指定 paranoid: false,您可以获得具有此角色的用户:

    const user = User.findById(userId, {
    paranoid: false,
    include: [Role]
    }

    关于node.js - Sequelize : Able to create even foreignKey is deleted (paranoid type),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65276315/

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