📜  sequelize 迁移设置唯一约束 - Javascript (1)

📅  最后修改于: 2023-12-03 15:05:10.661000             🧑  作者: Mango

Sequelize迁移设置唯一约束

在 Sequelize 中,我们可以使用迁移来管理数据库的版本并执行数据库操作。在处理数据的时候,有时候需要设置唯一约束来确保数据的一致性。本文将介绍在 Sequelize 中如何设置唯一约束。

唯一约束

唯一约束能确保某列或某几列的值都是唯一的。在 Sequelize 中,我们可以在表创建时通过迁移来设置唯一约束。唯一约束可以是单列唯一约束或多列唯一约束。

单列唯一约束

要设置单列唯一约束,我们只需要在模型中的某个属性上加上 unique: true 的属性即可。

module.exports = (sequelize, DataTypes) => {
  const User = sequelize.define('User', {
    email: {
      type: DataTypes.STRING,
      allowNull: false,
      unique: true, // 单列唯一约束
    },
    password: {
      type: DataTypes.STRING,
      allowNull: false,
    },
  });

  return User;
};

在定义模型时,在特定的属性上设置 unique: true 即可指定该属性是唯一的。

多列唯一约束

要设置多列唯一约束,我们需要在定义模型的时候通过 unique 选项指定一个数组,数组中包含需要设置为唯一的列的名称。

module.exports = (sequelize, DataTypes) => {
  const Company = sequelize.define('Company', {
    name: {
      type: DataTypes.STRING,
      allowNull: false,
    },
    domain: {
      type: DataTypes.STRING,
      allowNull: false,
    },
  }, {
    unique: {
      fields: ['name', 'domain'], // 多列唯一约束
    },
  });

  return Company;
};

在定义模型时,可以通过在模型的配置对象中指定 unique 选项来设置多列唯一约束。unique.fields 是一个数组,包含了需要设置为唯一的列的名称。

执行迁移

执行迁移的时候,Sequelize 会检查当前数据库中是否存在这个表,如果不存在则会创建这个表。如果表已存在,Sequelize 会尝试在当前数据库中执行迁移,并更新表结构。

执行迁移的命令如下:

sequelize db:migrate

以上命令将会执行所有尚未执行的迁移文件并更新数据库。

总结

在 Sequelize 中设置唯一约束非常简单。对于单列唯一约束,只需要在模型中特定的属性上设置 unique: true 即可。对于多列唯一约束,需要在模型的配置对象中指定 unique 选项,并将包含需要设置为唯一的列的数组赋值给 unique.fields

通过迁移设置唯一约束能够确保数据的一致性,让我们的应用程序更加健壮和可靠。