sequelize-cli db: перенос не генерирует таблицу связей - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть модель User (со связанным файлом миграции, созданным sequelize-cli):

'use strict';
module.exports = (sequelize, DataTypes) => {
    const User = sequelize.define('User', {
        dispName: DataTypes.STRING,
        email: DataTypes.STRING,
        phoneNum1: DataTypes.STRING
    }, {});
    User.associate = function (models) { // associations added manually
        User.belongsToMany(models.Role, { through: 'UserRoles', foreignKey: 'userId' });
    };
    return User;
};

вот сгенерированный файл миграции:

'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('Users', {
      cognitoId: { // modified: was an auto-incrementing integer
        allowNull: false,
        primaryKey: true,
        type: Sequelize.STRING(100)
      },
      dispName: {
        type: Sequelize.STRING(100) // modified: was just plain STRING
      },
      email: {
        type: Sequelize.STRING(100) // modified: was just plain STRING
      },
      phoneNum1: {
        type: Sequelize.STRING(15) // modified: was just plain STRING
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('Users');
  }
};

и Role модель (со связанным файлом миграции, созданным sequelize-cli):

'use strict';
module.exports = (sequelize, DataTypes) => {
    const Role = sequelize.define('Role', {
        name: DataTypes.STRING
    }, {});
    Role.associate = function (models) { // associations added manually
        Role.belongsToMany(models.User, { through: 'UserRoles', foreignKey: 'roleId' });
    };
    return Role;
};

вот сгенерированный файл миграции для Role:

'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('Roles', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      name: {
        type: Sequelize.STRING(100), // modified: was just plain STRING
        unique: true // Added manually
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('Roles');
  }
};

Когда я запускаю sequelize-cli db:migrate, таблица UserRoles не создана. Почему это так?

Страница Ассоциации руководства Sequelize, по-видимому, предполагает, что определение ассоциаций в файле модели - это все, что требуется ...

Исследование:

...