node.js - Sequelize 在查询中添加 'id' 列,而我已经有一列定义为 PK

标签 node.js express sequelize.js

我有以下模型定义:

const my_table = sequelize.define(
    "my_table",
    {
      tagId: {
        type: DataTypes.STRING,
        primaryKey: true,
        unique: true,
        allowNull: false,
      },
      column1: {
        type: DataTypes.INTEGER,
        references: {
          model: sequelize.table1,
          key: "id",
        },
        allowNull: false,
      },
      birthDate: {
        type: DataTypes.DATE,
        allowNull: false,
      },
      column2: {
        type: DataTypes.INTEGER,
        allowNull: false,
        references: {
          model: sequelize.table2,
          key: "id",
        },
      },
      column3: {
        type: DataTypes.INTEGER,
        allowNull: false,
        references: {
          model: sequelize.table3,
          key: "id",
        },
      },
      column4: {
        type: DataTypes.INTEGER,
        allowNull: false,
        references: {
          model: sequelize.table4,
          key: "id",
        },
      },
      column5: {
        type: DataTypes.INTEGER,
        allowNull: true,
        references: {
          model: sequelize.table5,
          key: "id",
        },
      },
    },
    {
      freezeTableName: true,
    }
  );

如您所见,我已经将 tagId 列定义为主键。但仍然在 findOne 和 findAll 上,我收到以下错误,因为 Sequelize 默认在最后添加“id”列。
{
        "name": "SequelizeDatabaseError",
        "parent": {
            "fatal": false,
            "errno": 1054,
            "sqlState": "42S22",
            "code": "ER_BAD_FIELD_ERROR",
            "sql": "SELECT `tagId`, `column1`, `birthDate`, `column2`, `column3`, `column4`, `column5`, `id` FROM `my_table` AS `my_table` WHERE `my_table`.`tagId` = '123';"
        },
        "original": {
            "fatal": false,
            "errno": 1054,
            "sqlState": "42S22",
            "code": "ER_BAD_FIELD_ERROR",
            "sql": "SELECT `tagId`, `column1`, `birthDate`, `column2`, `column3`, `column4`, `column5`, `id` FROM `my_table` AS `my_table` WHERE `my_table`.`tagId` = '123';"
        },
        "sql": "SELECT `tagId`, `column1`, `birthDate`, `column2`, `column3`, `column4`, `column5`, `id` FROM `my_table` AS `my_table` WHERE `my_table`.`tagId` = '123';"
    }

有没有办法避免这种事情?因为我已经搜索了几乎所有地方,但到处都是将任何其他列定义为 primaryKey: true 并且问题应该自行消失。
我是 nodejs 和 sequelize 的新手,所以不太了解它。我将感谢您的解决方案。

最佳答案

您可以使用:

my_table.removeAttribute('id')

关于node.js - Sequelize 在查询中添加 'id' 列,而我已经有一列定义为 PK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61635904/

相关文章:

node.js - $dateToString 和 $subString 没有显示正确的日期

javascript - 检查 gitlab 项目中文件的更新

javascript - Express js : Router. 中的 Socket.io 使用需要中间件函数但未定义

node.js - 在 Azure 上运行的 express.js 中的 multipart/form-data 出现错误

node.js - 在运行 sequelize 迁移时如何打印原始查询?

node.js - Sequelize.js - "create"或 "build"调用期间的模型关联

mysql - 如何在 sequelize 中按聚合函数排序

performance - 一个高效的 Javascript 集合结构

javascript - node.js 上的 SES 尽管返回 'success' 响应但未发送电子邮件

javascript - 实现全面的快速路由解决方案后,获取 API 调用失败 : Unexpected token < in JSON at position 0