sql >> データベース >  >> RDS >> Mysql

sequelize-cliを使用してmysqlの日付タイプの長さを設定する方法

    現在、詳細な属性を持つモデルを生成するオプションはありません。 ここで責任のあるコードを確認できます。 かなり明確なコードです。わかりやすい。

    私は通常、名前を付けてフィールドなしで生成し、モデルをコピーして生成されたファイルに貼り付けます。

    これがモデルです。

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

    もちろん、ここでは検証は必要ありません。また、1対多の関連付けがある場合は、IDや外部キーなどの追加フィールドが必要です。 sequelizeがモデルインスタンスに追加できるようにする場合は、updatedAtとcreatedAtを追加することを忘れないでください。

    したがって、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には、generateコマンドの詳細なオプションがありません。ただし、自由に追加してください。 githubからプルして、作業します。持っていてよかったです。この説明されたプロセスを自動化し、cliを続編する別のコマンドとして追加することもできます。




    1. GTTテーブル統計とSYS.WRI$_OPTSTAT_TAB_HISTORY

    2. PHPで複数のテーブルのクエリを書く

    3. WordPressのget_results()データベース関数を使用するとSQLインジェクションが防止されますか

    4. MySQLへの条件付き挿入-存在しない場所