Sequelize добавляет столбец id в запросы, тогда как у меня уже есть столбец, определенный как PK - PullRequest
0 голосов
/ 06 мая 2020

У меня есть следующее определение модели:

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, и проблема должна go исчезнуть сама собой. Я новичок в nodejs и продолжении, так что мало знаю об этом. Буду благодарен за решение.

1 Ответ

0 голосов
/ 07 мая 2020

Вы можете использовать:

my_table.removeAttribute('id')
...