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でこれを行うことができる他の方法はありますか?
ほとんどあります。次のように新しいオブジェクトにインデックスを追加する必要があります。
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;
};