sql >> Database teknologi >  >> RDS >> Mysql

hvordan man indstiller mysql datetype længde med sequelize-cli

I øjeblikket er der ingen mulighed for at generere model med detaljerede attributter. Du kan tjekke den ansvarlige kode her. Det er ret klar kode. Let at forstå.

Jeg plejer bare at generere den med navn og ingen felter og derefter kopiere og indsætte min model til den genererede fil.

Dette er modellen.

class MyModel extends Sequelize.Model { }
MyModel.init({
    name: {
        type: Sequelize.DataTypes.STRING(100),
        allowNull: false,
        validate: {
            notNull: true,
            notEmpty: true,
            len: [2, 100]
        }
    },
    description: {
        type: Sequelize.DataTypes.STRING(5000),
        allowNull: false,
        validate: {
            notNull: true,
            notEmpty: true,
            len: [100, 5000]
        }
    }
}, { sequelize: sequelizeInstance });

Jeg kører sequelize-cli model:generate --name MyModel og kopier indsæt hele init-parameterobjektet direkte inde i den genererede fil. Sådan:

queryInterface.createTable(
    'MyModel',
    {
        name: {
            type: Sequelize.DataTypes.STRING(100),
            allowNull: false,
            validate: {
                notNull: true,
                notEmpty: true,
                len: [2, 100]
            }
        },
        description: {
            type: Sequelize.DataTypes.STRING(5000),
            allowNull: false,
            validate: {
                notNull: true,
                notEmpty: true,
                len: [100, 5000]
            }
        }
    }
);

Selvfølgelig har vi ikke brug for valideringer her, og vi har også brug for nogle ekstra felter som Id og fremmednøgler, hvis der er en til mange tilknytning. Glem ikke at tilføje updatedAt og createdAt, hvis du tillader efterfølger at tilføje det til din modelforekomst.

Så fjern validering og tilføj de andre.

queryInterface.createTable(
    'MyModel',
    {
        id: {
            type: Sequelize.DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        name: {
            type: Sequelize.DataTypes.STRING(100),
            allowNull: false
        },
        description: {
            type: Sequelize.DataTypes.STRING(5000),
            allowNull: false
        },
        createdAt: {
            type: Sequelize.DataTypes.DATE,
            allowNull: false,
        },
        updatedAt: {
            type: Sequelize.DataTypes.DATE,
            allowNull: false,
        },
        MyOtherModelId: {
            type: Sequelize.DataTypes.INTEGER,
            allowNull: false,
            references: {
                model: 'MyOtherModel'
            },
            onUpdate: 'cascade',
            onDelete: 'restrict'
        }
    }
);

Sådan formår jeg at skabe mine migreringer ud fra mine modeller. Desværre har sequelize cli ingen detaljerede muligheder for at generere kommando. Men du er velkommen til at tilføje nogle! Træk det fra github og arbejd på det. Ville være rart at have. Du kan også automatisere denne beskrevne proces og tilføje den som en anden kommando for at følge cli.




  1. Opdagelse af spammere med MySQL

  2. Skal forbindelsestabeller have mere end én primær nøgle fra en anden identifikationstabel?

  3. mySQL UPDATE tabel baseret på SELECT (antal) af en anden tabel

  4. Skal liste alle triggere i SQL Server-databasen med tabelnavn og tabellens skema