Sequelize.INTEGER 与 DataTypes.INTEGER

mus*_*ons 6 javascript orm node.js sequelize.js sequelize-cli

2016 年使用 sequelize ORM 的代码中,我看到使用此模式定义的模型类型:

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

但是,在当前的续集文档中,您会看到最突出的记录:(Sequelize.INTEGER或其他类型,然后是整数)。同时,在当前的文档中,我DataTypes仍然发现documented/usedhere

在同一页面Sequelize.INTEGER上使用...,仅用于可延期或其他什么?

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

什么时候Sequelize.INTEGER是“当前解决方案”我可以将上面的代码更改为:

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

或者使用Sequelize作为参数会以某种方式使这失败?

Ary*_*rya 4

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

const Sequelize = require('sequelize');
Run Code Online (Sandbox Code Playgroud)

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

const model = require(path.join(__dirname, file))(sequelize, Sequelize);
Run Code Online (Sandbox Code Playgroud)

这公开了数据类型。你怎么称呼它并不重要。例如,我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
  }
Run Code Online (Sandbox Code Playgroud)

与迁移相同。