Почему sequelize-cli не включает идентификатор в файл модели? - PullRequest
0 голосов
/ 10 февраля 2020

Когда я запускаю следующую команду:

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. Если я изменю имя и / или определение поля первичного ключа ( ключ будет сгенерирован извне и будет установлен на объекте до его сохранения), тогда нужно ли включать определение поля идентификатора в файл модели? Почему / почему нет?

Версии:

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

Следующие не отвечают на мой вопрос:

1 Ответ

1 голос
/ 11 февраля 2020

Если вы не объявляете PK в своей модели, sequelize предполагает, что у вас есть id PK. Это по замыслу. И да, вы можете переименовать свой ПК в модели. Только не забудьте правильно настроить PK в режиме, соответствующем реальному PK в вашей БД.

...