Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak ustawić długość datetype mysql za pomocą sequelize-cli

Obecnie nie ma możliwości wygenerowania modelu ze szczegółowymi atrybutami. Tutaj możesz sprawdzić odpowiedzialny kod. To całkiem czytelny kod. Łatwy do zrozumienia.

Zwykle po prostu generuję go z nazwą i bez pól, a następnie kopiuję i wklejam model do wygenerowanego pliku.

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

Uruchamiam sequelize-cli model:generate --name MyModel i skopiuj i wklej cały obiekt parametru init bezpośrednio do wygenerowanego pliku. Tak:

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

Oczywiście nie potrzebujemy tutaj walidacji, a także potrzebujemy dodatkowych pól, takich jak identyfikator i klucze obce, jeśli istnieje skojarzenie od jednego do wielu. Nie zapomnij dodać updatedAt i createdAt, jeśli zezwalasz sequelize na dodanie ich do instancji modelu.

Więc usuń walidację i dodaj pozostałe.

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

W ten sposób udaje mi się tworzyć migracje z moich modeli. Niestety sequelize cli nie ma żadnych szczegółowych opcji generowania polecenia. Ale nie krępuj się dodać trochę! Wyciągnij go z github i popracuj nad nim. Byłoby miło mieć. Możesz również zautomatyzować ten opisany proces i dodać go jako kolejne polecenie do sekwencjonowania cli.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Opróżnij tabelę MySQL co godzinę

  2. Dlaczego moja tabela InnoDB ma dziwną wartość liczby rekordów?

  3. Wykorzystanie wyliczenia MyBatis

  4. Przesyłanie obrazu Laravel do bazy danych

  5. Wady przechowywania obrazów w bazie danych?