在Sequelize migration中定义部分索引?

时间:2016-02-16 20:18:55

标签: node.js database migration sequelize.js

我现在在模型定义中使用以下索引:

{
  name: 'unique_partner_id',
  unique: true,
  fields: ['partnerId'],
  where: {
    email: {
      $ne: null
    }
  }
}

但是,我想使用迁移而不是同步,因此我尝试将此定义从模型移动到初始迁移文件。

有一种queryInterface.addIndex()方法,但是,我找不到任何相关文档。

那么,如何使用queryInterface定义部分索引?

2 个答案:

答案 0 :(得分:3)

我一直在寻找如何在模型中执行此操作,您的问题为我解答了。所以现在我要为你回答这个问题!这是我起作用的向上功能:

up: function(queryInterface, Sequelize) {
  return queryInterface.addIndex(
    'tablename',
    ['column1', 'column2'],
    {
      name: 'indexname',
      where: {column3: true}
    }
  );
}

答案 1 :(得分:0)

以下是使用带有运算符的 where 查询语法的示例:

  up: (queryInterface, Sequelize) => queryInterface.addIndex(
    'column_name',
    ['new_id'],
    {
      name: 'index_name',
      where: { new_id: { [Sequelize.Op.ne]: null } },
    },
  )