Я видел использование обоих классов для определения типов данных, в том числе в официальной документации, которые, по-видимому, выполняют одну и ту же цель.
В учебнике я увидел, что приложение использует DataTypes для модели и Sequelize for Migrations, вы можете обмениваться между ними, и они продолжают работать. Примеры кодов:
Модель с использованием DataTypes:
module.exports = (sequelize, DataTypes) => {
const Driver = sequelize.define('Driver', {
firstName: {
type: DataTypes.STRING(50),
allowNull: false
},
Миграция с использованием Sequelize:
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('Drivers', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
Второй параметр в обоих из них - это только пакет sequelize
const Sequelize = require('sequelize');
Вы заметите, что в ваших index.js моделей (если вы настроили так, как было предложено), что вы делаете что-то вроде ниже, где вы передаете в качестве второго аргумента в качестве продолжения.
const model = require(path.join(__dirname, file))(sequelize, Sequelize);
Это предоставляет типы данных. Неважно, как вы это называете. Например
module.exports = (sequelize, asd) => {
const Driver = sequelize.define('Driver', {
firstName: {
type: asd.STRING(50),
allowNull: false
},
То же самое с миграциями.
Как указано в документах, DataTypes:
Класс удобства, в котором используются обычно используемые типы данных.