sql >> Databáze >  >> RDS >> Mysql

jak nastavit délku mysql datetype pomocí sequelize-cli

V současné době neexistuje možnost generování modelu s podrobnými atributy. Zde můžete zkontrolovat. /a> Je to docela jasný kód. Snadno pochopitelné.

Obvykle jej vygeneruji s názvem a bez polí a poté zkopíruji a vložím svůj model do vygenerovaného souboru.

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

Spouštím sequelize-cli model:generate --name MyModel a zkopírujte vložte veškerý objekt parametru init přímo do vygenerovaného souboru. Takhle:

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

Samozřejmě zde nepotřebujeme ověření a také potřebujeme nějaká další pole, jako je Id a cizí klíče, pokud existuje jedna nebo více asociací. Nezapomeňte přidat updatedAt a createdAt, pokud povolíte sequelize přidat je do instance vašeho modelu.

Odeberte tedy ověření a přidejte ostatní.

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

Tak se mi daří vytvářet migrace z mých modelů. Bohužel sequelize cli nemá žádné podrobné možnosti pro generování příkazu. Ale klidně nějaké přidejte! Vytáhněte to z githubu a pracujte na něm. Bylo by hezké mít. Tento popsaný proces můžete také zautomatizovat a přidat jej jako další příkaz k sequelizování cli.




  1. Yii Spuštění dotazu MySql

  2. MYSQL AND dotaz k uspokojení ve stejném sloupci

  3. Prohlášení Oracle

  4. Získejte nadřazenou MySQL nejvyšší úrovně