为什么 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;
};
问题:
- 为什么模型文件不包含
id
的定义?
- 如果我更改主键字段的名称 and/or 定义(键将在外部生成并在保存之前设置在对象上),那么我是否必须包括定义模型文件中的 ID 字段? Why/why 不是吗?
版本:
[Node: 12.14.1, CLI: 5.5.1, ORM: 5.21.3]
以下不回答我的问题:
如果您没有在您的模型中声明 PK,sequelize 会假定您拥有 id PK。这是设计使然。是的,您可以在模型中重命名您的 PK。只是不要忘记根据您数据库中的真实 PK 在模式中正确设置 PK。
当我运行以下命令时:
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;
};
问题:
- 为什么模型文件不包含
id
的定义? - 如果我更改主键字段的名称 and/or 定义(键将在外部生成并在保存之前设置在对象上),那么我是否必须包括定义模型文件中的 ID 字段? Why/why 不是吗?
版本:
[Node: 12.14.1, CLI: 5.5.1, ORM: 5.21.3]
以下不回答我的问题:
如果您没有在您的模型中声明 PK,sequelize 会假定您拥有 id PK。这是设计使然。是的,您可以在模型中重命名您的 PK。只是不要忘记根据您数据库中的真实 PK 在模式中正确设置 PK。