Доброго времени суток. Пишу приложение на nestjs с использованием typeorm, возникла небольшая загвоздка, у меня есть две сущности:
export class User {
@PrimaryGeneratedColumn()
id: number
@OneToOne(() => Socials, socials => socials.user)
socials: Socials
}
export class Socials {
@PrimaryColumn({
type: "int"
})
@OneToOne(() => User,user => user.socials)
@JoinColumn({
name: "user"
})
user: User
}
По непонятной мне причине при вызове подобного кода у меня происходит ошибка:
async getSocials(user: User) {
return await this.socialsRepository.findOne({
where: {
user: {
id: user.id
}
}
})
}
Сама ошибка:
QueryFailedError: Unknown column 'id' in 'where clause'
query: 'SELECT `Socials`.`user` AS `Socials_user`, `Socials`.`vk` AS `Socials_vk`, `Socials`.`discord` AS `Socials_discord`, `Socials`.`telegram` AS `Socials_telegram` FROM `socials` `Socials` WHERE (`Socials`.`user` = ?) LIMIT 1',
parameters: [ { id: 12 } ],
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlState: '42S22',
sqlMessage: "Unknown column 'id' in 'where clause'",
sql: 'SELECT `Socials`.`user` AS `Socials_user`, `Socials`.`vk` AS `Socials_vk`, `Socials`.`discord` AS `Socials_discord`, `Socials`.`telegram` AS `Socials_telegram` FROM `socials` `Socials` WHERE (`Socials`.`user` = `id` = 12) LIMIT 1'
},
code: 'ER_BAD_FIELD_ERROR',
errno: 1054,
sqlState: '42S22',
sqlMessage: "Unknown column 'id' in 'where clause'",
sql: 'SELECT `Socials`.`user` AS `Socials_user`, `Socials`.`vk` AS `Socials_vk`, `Socials`.`discord` AS `Socials_discord`, `Socials`.`telegram` AS `Socials_telegram` FROM `socials` `Socials` WHERE (`Socials`.`user` = `id` = 12) LIMIT 1'
}
При чем я уверен что раньше всё работало нормально, потому что приложение тестировалось и функция отрабатывала правильно, но в неизвестный мне момент перестала работать. Буду благодарен за помощь в решении вопроса
UPD: при использовании такого кода всё работает как надо, сломалось когда во всем приложении убрали PrimaryGeneratedColumn из OneToOne отношений
export class Socials {
@PrimaryGeneratedColumn()
id: number
@OneToOne(() => User,user => user.socials)
@JoinColumn({
name: "user"
})
user: User
}
Хочется всё равно понять как можно избавиться от лишнего столбца