У меня есть следующее определение модели:
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 и продолжении, так что мало знаю об этом. Буду благодарен за решение.