为什么 sequelize-cli 不在模型文件中包含 ID?

Why doesn't sequelize-cli include the ID in the model file?

当我运行以下命令时:

sequelize-cli model:create --name User --attributes "dispName:string,email:string,phoneNum1:string"

我最终得到以下迁移文件:

'use strict';
module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.createTable('Users', {
      id: {
        allowNull: false,
        autoIncrement: true,
        primaryKey: true,
        type: Sequelize.INTEGER
      },
      dispName: {
        type: Sequelize.STRING
      },
      email: {
        type: Sequelize.STRING
      },
      phoneNum1: {
        type: Sequelize.STRING
      },
      createdAt: {
        allowNull: false,
        type: Sequelize.DATE
      },
      updatedAt: {
        allowNull: false,
        type: Sequelize.DATE
      }
    });
  },
  down: (queryInterface, Sequelize) => {
    return queryInterface.dropTable('Users');
  }
};

和以下模型文件:

'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 can be defined here
  };
  return User;
};

问题:

  1. 为什么模型文件不包含 id 的定义?
  2. 如果我更改主键字段的名称 and/or 定义(键将在外部生成并在保存之前设置在对象上),那么我是否必须包括定义模型文件中的 ID 字段? Why/why 不是吗?

版本:

[Node: 12.14.1, CLI: 5.5.1, ORM: 5.21.3]

以下不回答我的问题:

如果您没有在您的模型中声明 PK,sequelize 会假定您拥有 id PK。这是设计使然。是的,您可以在模型中重命名您的 PK。只是不要忘记根据您数据库中的真实 PK 在模式中正确设置 PK。