Mysql
 sql >> база данни >  >> RDS >> Mysql

как да зададете дължина на типа дата на mysql с sequelize-cli

В момента няма опция за генериране на модел с подробни атрибути. Можете да проверите отговорния код тук Това е доста ясен код. Лесно за разбиране.

Обикновено просто го генерирам с име и без полета и след това копирам и поставям моя модел в генерирания файл.

Това е моделът.

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

Пускам sequelize-cli model:generate --name MyModel и копирайте, поставете целия обект на параметрите на init директно вътре в генерирания файл. Като това:

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

Разбира се, тук не се нуждаем от валидации, а също така се нуждаем от допълнителни полета като идентификатор и външни ключове, ако има една към много асоциации. Не забравяйте да добавите updatedAt и createdAt, ако разрешите на sequelize да го добави към вашия модел.

Така че премахнете validate и добавете останалите.

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

Така успявам да създам своите миграции от моите модели. За съжаление sequelize cli няма подробни опции за генериране на команда. Но не се колебайте да добавите някои! Извадете го от github и работете върху него. Би било хубаво да има. Можете също така да автоматизирате този описан процес и да го добавите като друга команда за секвализиране на 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. Как мога да направя фатални грешки на ВСИЧКИ mysql предупреждения?

  2. MySQL:4 Table has-many-through Join?

  3. Неправилна стойност на низа в python+django+Mysql

  4. Primefaces 5.0 диаграми - как да създавате динамично модели на диаграми и серии изцяло от стойности на базата данни

  5. Кое от съпоставянето на utf8 е най-доброто?