自定义 sequelize-cli 生成的 ID
Customizing sequelize-cli generated IDs
使用以下方法创建模型:
sequelize-cli model:create --name User --attributes "dispName:string,email:string,phoneNum1:string,vendorId:integer"
导致以下迁移:
'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
},
// plus others...
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('Users');
}
};
我想将自动定义的 ID 更改为:
cognitoId: {
allowNull: false,
primaryKey: true,
type: Sequelize.STRING(100)
}
所以:
- sequelize可以识别这个ID吗?
- 我需要在哪里进行此更改?我只能识别迁移文件。
- 模型文件没有
cognitoId
(或原始自动生成的 id
字段)的定义:我将如何获得 [=16] 的值=]实例的cognitoId
(在查询返回的数据中)?
- 更改自动生成的
id
字段会产生影响吗?
- 字段名是
id
"magical"吗?即,是否必须将主键 命名为 id
?
- 有更好的方法吗?
- 将字段类型从
Sequelize.STRING
更改为 Sequelize.STRING(100)
是否会产生任何问题?
- 为什么sequelize-cli生成的模型文件没有定义
id
字段?
从命令行生成模型+迁移时,我找不到任何语法来指定字段的 ID 或任何其他自定义项。
使用:
[Node: 12.14.1, CLI: 5.5.1, ORM: 5.21.3]
PS:对 NodeJS 来说相对较新,对 Sequelize 来说是全新的。
- 是
- 您应该在您的模型中声明自定义命名的 PK
- 见第 2 页。如果你没有在你的模型中声明 PK,那么 sequelize 假设你有 id PK,整数类型,自动递增。如果您希望为您的 PK 分配另一个名称,您应该在模型中声明它。
- 取决于您所做的更改
- sequelize中默认的PK名称(见p.3)。您可以为您的 PK 设置不同的名称,在您的模型中手动声明它(请参阅第 3 页)
- 我个人更喜欢在我的模型中声明所有 PK,即使它们具有 id 名称和默认 PK 类型和值。
- 如果所有 PK 值不超过此长度就没有问题
- 见第 3 页
从命令行生成模型时,您只能为字段定义名称和类型。
使用以下方法创建模型:
sequelize-cli model:create --name User --attributes "dispName:string,email:string,phoneNum1:string,vendorId:integer"
导致以下迁移:
'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
},
// plus others...
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('Users');
}
};
我想将自动定义的 ID 更改为:
cognitoId: {
allowNull: false,
primaryKey: true,
type: Sequelize.STRING(100)
}
所以:
- sequelize可以识别这个ID吗?
- 我需要在哪里进行此更改?我只能识别迁移文件。
- 模型文件没有
cognitoId
(或原始自动生成的id
字段)的定义:我将如何获得 [=16] 的值=]实例的cognitoId
(在查询返回的数据中)? - 更改自动生成的
id
字段会产生影响吗? - 字段名是
id
"magical"吗?即,是否必须将主键 命名为id
? - 有更好的方法吗?
- 将字段类型从
Sequelize.STRING
更改为Sequelize.STRING(100)
是否会产生任何问题? - 为什么sequelize-cli生成的模型文件没有定义
id
字段?
从命令行生成模型+迁移时,我找不到任何语法来指定字段的 ID 或任何其他自定义项。
使用:
[Node: 12.14.1, CLI: 5.5.1, ORM: 5.21.3]
PS:对 NodeJS 来说相对较新,对 Sequelize 来说是全新的。
- 是
- 您应该在您的模型中声明自定义命名的 PK
- 见第 2 页。如果你没有在你的模型中声明 PK,那么 sequelize 假设你有 id PK,整数类型,自动递增。如果您希望为您的 PK 分配另一个名称,您应该在模型中声明它。
- 取决于您所做的更改
- sequelize中默认的PK名称(见p.3)。您可以为您的 PK 设置不同的名称,在您的模型中手动声明它(请参阅第 3 页)
- 我个人更喜欢在我的模型中声明所有 PK,即使它们具有 id 名称和默认 PK 类型和值。
- 如果所有 PK 值不超过此长度就没有问题
- 见第 3 页
从命令行生成模型时,您只能为字段定义名称和类型。