gpt4 book ai didi

node.js - 自定义 sequelize-cli 生成的 ID

转载 作者:行者123 更新时间:2023-12-03 22:26:12 29 4
gpt4 key购买 nike

使用以下方法创建模型:

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 字段):我将如何获得 User 实例的 cognitoId 的值(在查询返回的数据中)?
  • 更改自动生成的 id 字段会产生影响吗?
  • 字段名 id 是否“神奇”?即,主键是否必须命名为 id
  • 有没有更好的方法来做到这一点?
  • 将字段类型从 Sequelize.STRING 更改为 Sequelize.STRING(100) 会产生任何问题吗?
  • 为什么sequelize-cli生成的models文件没有定义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 名称(参见第 3 页)。您可以为您的 PK 手动设置不同的名称,并在您的模型中对其进行声明(请参阅第 3 页)
  • 我个人更喜欢在我的模型中声明所有 PK,即使它们具有 id 名称和默认 PK 类型和值。
  • 如果所有 PK 值不超过此长度,则没有问题
  • 见第 3 页

  • 从命令行生成模型时,您只能为字段定义名称和类型。

    关于node.js - 自定义 sequelize-cli 生成的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60145815/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com