sql >> Base de Datos >  >> RDS >> Mysql

cómo configurar la longitud del tipo de fecha mysql con sequelize-cli

Actualmente no hay opción para generar modelo con atributos detallados. Puede consultar el código responsable aquí. Es un código bastante claro. Fácil de entender.

Por lo general, solo lo genero con nombre y sin campos y luego copio y pego mi modelo en el archivo generado.

Este es el modelo.

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

Ejecuto sequelize-cli model:generate --name MyModel y copie y pegue todo el objeto de parámetro de inicio directamente dentro del archivo generado. Así:

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

Por supuesto, no necesitamos validaciones aquí y también necesitamos algunos campos adicionales como Id y claves externas si hay una asociación de uno a muchos. No olvide agregar updatedAt y createdAt si permite que sequelize lo agregue a su instancia de modelo.

Así que elimine la validación y agregue los demás.

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

Así es como me las arreglo para crear mis migraciones a partir de mis modelos. Desafortunadamente, sequelize cli no tiene opciones detalladas para generar el comando. ¡Pero siéntase libre de agregar algunos! Sácalo de github y trabaja en él. Sería bueno tener. También puede automatizar este proceso descrito y agregarlo como otro comando para secuenciar cli.