Задать вопрос
@Romo4ka_eto_ia
Просто человек

Почему возникает ошибка при запросе через typeorm?

Доброго времени суток. Пишу приложение на 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
}


Хочется всё равно понять как можно избавиться от лишнего столбца
  • Вопрос задан
  • 91 просмотр
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы