微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sequelize 唯一约束 + 偏执

如何解决Sequelize 唯一约束 + 偏执

我有一个表,它对字段 + 偏执有唯一约束。 在下面的示例中,品牌名称是唯一值

class Brand extends Model {
        static init(sequelize) {
            return super.init(
                {
                    BrandID: {
                        field: "brand_id",type: DataTypes.INTEGER(11),allowNull: false,primaryKey: true,autoIncrement: true
                    },BrandName: {
                        field: "brand_name",type: DataTypes.STRING(40),unique: true
                    }
                },{
                    sequelize,tableName: "brands",timestamps: true,paranoid: true
                }
            );
        }

        static associate(models) {

        }

    };

问题是,一旦删除一个实体,由于唯一性约束,我无法添加具有相同品牌名称的另一个实体,尽管它按预期标记为已删除

我想将字段定义为模型的一部分,即添加

                    DeletedAt: {
                        field: "deleted_at",type: DataTypes.DATE,defaultValue: 0
                    }

并且对品牌名称+deleted_at 有一个复合唯一约束,但它失败了。

Sequelize 必须有一个内置的解决方案...... 有什么想法吗???

解决方法

我认为最干净的解决方案,一个 sequelize 的偏执特征被创建来处理,是恢复原始记录。恢复后,您可以更新该记录以满足您的需要。

// Example showing the static `restore` method.
await Brand.restore({ where: { BrandName: someBrandYouNeedAgain } })

https://sequelize.org/master/manual/paranoid.html#restoring

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。