How to define unique index on multiple columns in sequelize

前端 未结 6 2140
半阙折子戏
半阙折子戏 2020-12-13 06:50

How do I define a unique index on a combination of columns in sequelize. For example I want to add a unique index on user_id, count and name.

var Tag = sequ         


        
6条回答
  •  被撕碎了的回忆
    2020-12-13 07:04

    I tried to create an index on a single column. This worked for me. Hope this helps.

    Model

    module.exports = (sequelize, DataTypes) => {
      const Tag = sequelize.define(
        "Tag",
        {
          name: { type: DataTypes.STRING, unique: true },
          nVideos: DataTypes.INTEGER
        },
        {
          indexes: [
            {
              unique: true,
              fields: ["name"]
            }
          ]
        }
      );
    
      return Tag;
    };
    

    Migration

    module.exports = {
      up: (queryInterface, Sequelize) => {
        return queryInterface.createTable(
          "Tags",
          {
            id: {
              allowNull: false,
              autoIncrement: true,
              primaryKey: true,
              type: Sequelize.INTEGER
            },
            name: {
              type: Sequelize.STRING,
              unique: "unique_tag"
            },
            nVideos: { type: Sequelize.INTEGER },
            createdAt: {
              allowNull: false,
              type: Sequelize.DATE
            },
            updatedAt: {
              allowNull: false,
              type: Sequelize.DATE
            }
          },
          {
            uniqueKeys: {
              unique_tag: {
                customIndex: true,
                fields: ["name"]
              }
            }
          }
        );
      },
      down: queryInterface => {
        return queryInterface.dropTable("Tags");
      }
    };
    
    

提交回复
热议问题