Проблема со следующими частями миграций:
- Секвелизация здесь не определена. Измените его на
DataTypes
.
email: {
allowNull: false,
type: Sequelize.STRING,
unique: true
},
Ссылка не определена правильно в таблице userSession. Это должно быть определено так:
userId: {
type: DataTypes.UUID,
references: {
model: 'users',
key: 'id',
},
},
И последнее, но не менее важное: поле id таблицы
users
должно быть определено как первичный ключ. В противном случае вы не сможете назначить его в качестве внешнего ключа в таблице userSession. Следовательно, в таблицу пользователей добавьте свойство
primaryKey: true
.
id: {
primaryKey: true,
allowNull: false,
type: DataTypes.UUID
},
Чтобы в конце сценарии миграции выглядели так:
Для таблицы пользователей:
module.exports.up = (queryInterface, DataTypes) => {
return queryInterface.createTable('users', {
id: {
primaryKey: true,
allowNull: false,
type: DataTypes.UUID
},
email: {
allowNull: false,
type: DataTypes.STRING,
unique: true
},
passwordHash: {
allowNull: false,
type: DataTypes.CHAR(64)
},
createdAt: {
allowNull: false,
type: DataTypes.DATE
},
updatedAt: {
allowNull: false,
type: DataTypes.DATE
},
deletedAt: {
allowNull: true,
type: DataTypes.DATE
}
}, {
charset:"utf8"
}
);
};
module.exports.down = queryInterface => queryInterface.dropTable("users");
Для таблицы userSession:
module.exports.up = (queryInterface, DataTypes) => {
return queryInterface.createTable('userSession', {
id: {
allowNull: false,
type: DataTypes.UUID
},
userId: {
type: DataTypes.UUID,
references: {
model: 'users',
key: 'id',
},
},
passwordHash: {
allowNull: false,
type: DataTypes.CHAR(64)
},
createdAt: {
allowNull: false,
type: DataTypes.DATE
},
updatedAt: {
allowNull: false,
type: DataTypes.DATE
},
deletedAt: {
allowNull: true,
type: DataTypes.DATE
}
}, {
charset:"utf8"
}
);
};
module.exports.down = queryInterface => queryInterface.dropTable("userSession");
PS: удалить старые таблицы вместе с SequelizeMeta в вашей базе данных, а затем запустить миграцию.