sql >> Databasteknik >  >> RDS >> Mysql

hur man ställer in mysql datetype längd med sequelize-cli

För närvarande finns det inget alternativ att generera modell med detaljerade attribut. Här kan du kontrollera den ansvariga koden. Det är ganska tydlig kod. Lätt att förstå.

Jag brukar bara generera den med namn och inga fält och sedan kopiera och klistra in min modell till den genererade filen.

Det här är 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 });

Jag kör sequelize-cli model:generate --name MyModel och kopiera klistra in alla init-parameterobjekt direkt i den genererade filen. Så här:

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

Naturligtvis behöver vi inga valideringar här och även vi behöver några extra fält som Id och främmande nycklar om det finns en till många association. Glöm inte att lägga till updatedAt och createdAt om du tillåter sequelize att lägga till den i din modellinstans.

Så ta bort validera och lägg till de andra.

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

Det är så jag lyckas skapa mina migreringar från mina modeller. Tyvärr har sequelize cli inga detaljerade alternativ för generera kommando. Men lägg gärna till några! Dra den från github och arbeta på den. Skulle vara trevligt att ha. Du kan också automatisera den här beskrivna processen och lägga till den som ett annat kommando för att sequelisera cli.




  1. Hur undkommer man strängar i PDO?

  2. Mysql SET NAMES UTF8 - hur blir man av med?

  3. SQL Server CTE och rekursionsexempel

  4. Fel Nyckelfel 255 när pymysql.connect körs