web-dev-qa-db-ja.com

Sequelizeモデル内でインデックスを定義する方法は?

Sequelizeモデル内で、SQL列の1つにシンプルで一意でないインデックスを作成しようとしています。私はこの投稿をフォローしようとしました: sequelizeの複数の列に一意のインデックスを定義する方法

これは私のコードです:

module.exports = (sequelize, DataTypes) => {
    const Item = sequelize.define('Item', {
        itemId:  DataTypes.STRING,
        ownerId:  DataTypes.INTEGER,
        status: DataTypes.STRING,
        type: DataTypes.STRING,
        nature: DataTypes.STRING,
        content: DataTypes.STRING,
        moment: DataTypes.BIGINT,
        indexes:[
            {
                unique: 'false',
                fields:['ownerId']
            }
        ]

    });

    return Item;
};

私はこのエラーを受け取ります:

未処理の拒否SequelizeDatabaseError:SQL構文にエラーがあります。 MariaDBサーバーのバージョンに対応するマニュアルで、1行目の「[object Object]、createdAt DATETIME NOT NULL、updatedAt DATETIME NOT NULL、P」の近くで使用する正しい構文を確認してください

Server.jsファイルにあるコードは次のとおりです。

models.sequelize.sync().then(function () {
    server.listen(port, () => {
        console.log('server ready')
    })
});

私のセットアップの何が問題になっていますか? Sequelizeでこれを行うことができる他の方法はありますか?

4
i.brod

ほとんどあります。次のように新しいオブジェクトにインデックスを追加する必要があります。

module.exports = (sequelize, DataTypes) => {
    const Item = sequelize.define('Item', {
        itemId:  DataTypes.STRING,
        ownerId:  DataTypes.INTEGER,
        status: DataTypes.STRING,
        type: DataTypes.STRING,
        nature: DataTypes.STRING,
        content: DataTypes.STRING,
        moment: DataTypes.BIGINT
    },
    {
      indexes:[
       {
         unique: false,
         fields:['ownerId']
       }
      ]
    });

    return Item;
};
2
Roi