Sequelize.INTEGER 对比 DataTypes.INTEGER

Sequelize.INTEGER vs DataTypes.INTEGER

code from 2016 using sequelize ORM 中,我看到使用此模式定义的模型类型:

 module.exports = function(sequelize, DataTypes) {
     const Tasks = sequelize.define("Tasks", {  id: {
       type: DataTypes.INTEGER,
       [ ...etc.]

但是在当前的 sequelize 文档中,您会看到 most prominently documentedSequelize.INTEGER(或其他类型然后是整数)。 同时在当前文档中我还发现 DataTypes 仍然 documented/used: here.

在同一页面上使用了 Sequelize.INTEGER...,它是否仅用于可延迟对象或其他内容?

我试图找出这是否会随着时间的推移而改变,但找不到。

Sequelize.INTEGER是'current solution'时,我可以把上面的代码改成:

module.exports = function(sequelize, Sequelize) {
  const Tasks = sequelize.define("Tasks", {  id: {
    type: Sequelize.INTEGER,
    [ ...etc.]

或者使用 Sequelize 作为参数是否会以某种方式导致失败?

它们中的第二个参数只是 sequelize 包本身你可以使用你想要使用的任何一个

const Sequelize = require('sequelize');

您会注意到在您的 index.js 模型中(如果您按照建议进行设置),您会执行类似下面的操作,其中您将 sequelize 作为第二个参数传递。

const model = require(path.join(__dirname, file))(sequelize, Sequelize);

这公开了数据类型。你怎么称呼它并不重要。例如我在下面的代码中称它为 abc 你可以使用任何名称

module.exports = (sequelize, abc) => {
  const Driver = sequelize.define('Driver', {
  firstName: {
       type: abc.STRING(),
       allowNull: false
  },
  last_name: {
       type: abc.TEXT,
       allowNull: true
  },
  email: {
      type: abc.TEXT,
      allowNull: false
  },
  password: {
      type: abc.TEXT,
      allowNull: true
  }

与迁移相同。