sql >> Database >  >> RDS >> Mysql

hoe mysql datetype lengte in te stellen met sequelize-cli

Momenteel is er geen optie om een ​​model met gedetailleerde attributen te genereren. Je kunt de verantwoordelijke code hier controleren. Het is een vrij duidelijke code. Makkelijk te begrijpen.

Ik genereer het meestal gewoon met naam en zonder velden en kopieer dan mijn model naar het gegenereerde bestand.

Dit is het model.

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 });

Ik voer sequelize-cli model:generate --name MyModel . uit en kopieer en plak alle init-parameterobjecten rechtstreeks in het gegenereerde bestand. Zoals dit:

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]
            }
        }
    }
);

Natuurlijk hebben we hier geen validaties nodig en we hebben ook wat extra velden nodig zoals Id en buitenlandse sleutels als er een te veel associatie is. Vergeet niet om updatedAt en createdAt toe te voegen als je sequelize toestaat om het toe te voegen aan je modelinstantie.

Dus verwijder valideren en voeg de anderen toe.

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'
        }
    }
);

Zo slaag ik erin om mijn migraties van mijn modellen te maken. Helaas heeft sequelize cli geen gedetailleerde opties voor het genereren van opdrachten. Maar voel je vrij om er wat aan toe te voegen! Trek het van github en werk eraan. Zou leuk zijn om te hebben. Je kunt dit beschreven proces ook automatiseren en als een ander commando toevoegen om cli te vervolgen.




  1. Polymorf behoortTo in veel tot veel mapping in graals?

  2. Slaapstand forceren om tabellen te maken na het laten vallen en opnieuw maken van de database

  3. Gebruik parameter in functie doorgegeven aan google.setOnLoadCallback();

  4. classNotFound Uitzondering bij gebruik van JDBC voor MYSQL op Tomcat in eclipse