在sequelize迁移中,将lower()添加到addIndex()中的字段中



要在顺序迁移中创建唯一索引,我们可以执行以下操作,

await queryInterface.addIndex(SCHOOL_TABLE, {
fields: ['name', 'school_id'],
unique: true,
name: SCHOOL_NAME_ID_UNIQUE_INDEX,
where: {
is_deleted: false
},
transaction,
})

问题是,由于区分大小写,它允许重复。

在这里的文档中,提到fields应该是an array of attributes

如何将lower()应用于name字段,使其不区分大小写?

我现在正在使用一种变通方法,使用原始查询。我认为addIndex()不支持在fields上使用函数。

await queryInterface.sequelize.query(`CREATE  UNIQUE INDEX  IF NOT EXISTS ${SCHOOL_NAME_ID_UNIQUE_INDEX} 
ON ${SCHEMA}.schools USING btree (lower(name), school_id) where is_deleted = false;
`, { transaction});

最新更新