sequelize.js – 使用Sequelize在单个迁移中创建表并添加索引

前端之家收集整理的这篇文章主要介绍了sequelize.js – 使用Sequelize在单个迁移中创建表并添加索引前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在单次迁移中创建表并在其某些列上添加索引的正确方法是什么?

示例迁移:2012341234-create-todo.js

如何在“author_id”和“title”列上创建索引?

'use strict';
module.exports = {
  up: (queryInterface,Sequelize) => {
    return queryInterface.createTable('Todos',{
      id: {
        allowNull: false,autoIncrement: true,primaryKey: true,type: Sequelize.INTEGER
      },author_id: {
        type: Sequelize.INTEGER,onDelete: 'CASCADE',references: {
          model: 'Authors',key: 'id',as: 'authorId'
        }
      },title: {
        type: Sequelize.STRING
      },content: {
        type: Sequelize.TEXT
      },createdAt: {
        allowNull: false,type: Sequelize.DATE
      },updatedAt: {
        allowNull: false,type: Sequelize.DATE
      }
    });
  },down: (queryInterface,Sequelize) => {
    return queryInterface.dropTable('Todos');
  }
};

Sequelize文档表明将添加如下索引:

queryInterface.addIndex('Todos',['author_id','title']);

这些方法可以被链接吗? “向上”和“向下”只需要返回一个承诺吗?我没有在文档中看到任何关于它的内容.

解决方法

是的,方法可以链接.在您的情况下,您只需在createTable方法后执行addIndex
return queryInterface.createTable('Todos',{
    // columns...
}).then(() => queryInterface.addIndex('Todos','title']))
.then(() => {
    // perform further operations if needed
});

猜你在找的JavaScript相关文章