Sequelize Migration addIndex не добавляет индекс в порядке убывания - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь создать индекс для существующей таблицы (Postgres) в столбце даты, чтобы я мог получать самые последние сообщения в первую очередь

Файл модели feeditem.js

module.exports = (sequelize, DataTypes) => {
  const FeedItem = sequelize.define('FeedItem', {
    feedItemId: {
      //...
    },
    pubdate: {
      allowNull: false,
      type: DataTypes.DATE,
      validate: {
        isDate: true,
        notEmpty: true,
      },
    },
    link: {
      //...
    },
    title: {
      //...
    },
    description: {
      //...
    },
    summary: {
      //...
    },
    author: {
      //...
    },
    hash: {
      //...
    },
  }, {
    timestamps: false,
    underscored: true,
    indexes: [
      {
        fields: [{ attribute: 'pubdate', order: 'DESC' }],
        unique: false,
      },
    ],
  });

  FeedItem.associate = (models) => {
    // associations can be defined here
    //...
  };
  return FeedItem;
};

Файл миграции create-feed-item.js

module.exports = {
  up: (queryInterface, Sequelize) => queryInterface.createTable('feed_items', {
    feed_item_id: {
      allowNull: false,
      autoIncrement: true,
      primaryKey: true,
      type: Sequelize.INTEGER,
    },
    pubdate: {
      allowNull: false,
      type: Sequelize.DATE,
    },
    link: {
      allowNull: false,
      type: Sequelize.STRING,
    },
    title: {
      allowNull: false,
      type: Sequelize.STRING,
    },
    description: {
      type: Sequelize.TEXT,
    },
    summary: {
      type: Sequelize.TEXT,
    },
    author: {
      type: Sequelize.STRING,
    },
    hash: {
      allowNull: false,
      type: Sequelize.UUID,
      unique: true,
    },
  }),
  // eslint-disable-next-line no-unused-vars
  down: (queryInterface, Sequelize) => queryInterface.dropTable('feed_items'),
};

Файл миграции add-index.js

module.exports = {
  /*
    Add altering commands here.
    Return a promise to correctly handle asynchronicity.
    Example:
    return queryInterface.createTable('users', { id: Sequelize.INTEGER });
  */
  // eslint-disable-next-line no-unused-vars
  up: (queryInterface, Sequelize) => queryInterface.addIndex('feed_items', ['pubdate'], {
    fields: [{
      attribute: 'pubdate', order: 'DESC',
    }],
    unique: false,
    name: 'feed_items_pubdate_index',
  }),
  /*
    Add reverting commands here.
    Return a promise to correctly handle asynchronicity.
    Example:
    return queryInterface.dropTable('users');
  */
  // eslint-disable-next-line no-unused-vars
  down: (queryInterface, Sequelize) => queryInterface.removeIndex('feed_items', 'feed_items_pubdate_index'),
};

Миграции выполняются в идеальном порядке: сначала создается таблица, а индекс добавляетсяпозже.Ведение журнала включено, и когда я проверяю журналы

Ожидается: он должен создать индекс DESC для pubdate, который будет выглядеть следующим образом:

CREATE INDEX "feed_items_pubdate_index" ON "feed_items" ("pubdate" DESC)

Фактический вывод

Executing (default): CREATE INDEX "feed_items_pubdate_index" ON "feed_items" ("pubdate")

Любые идеичто здесь не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...