Тип данных «Array» в «User.repositories» не поддерживается базой данных «mysql»

#javascript #mysql #typescript #typeorm

#javascript #mysql #typescript #typeorm

Вопрос:

У меня есть две сущности с использованием typeorm, как показано ниже:

 user.entity

  @Column({array: true})
  @OneToMany(() => Repository, repo => repo.user)
  repositories: Repository[];

repository.entity

  @ManyToOne(() => User, user => user.repositories)
  user: User;
 

почему, когда я запускаю свое приложение, из моего mysql выдает ошибку:

 Data type "Array" in "User.repositories" is not supported by "mysql" database
 

я пытаюсь добавить @Column({array: true}) , но безуспешно, я удаляю всю базу данных, но это все равно не работает

Ответ №1:

 @Column("text", {
    array: true
})
repositories: Repository[];
 

Это решит вашу проблему, но убедитесь, что вам действительно нужно array поле в OneToMany отношении.

 @OneToMany(() => Repository, repo => repo.user)
repositories: Repository[];
 

Я думаю, это все, что вам нужно. Смотрите отношения «Многие к одному» / «один ко многим»

Комментарии:

1. да, потому что моему пользователю нужно иметь более одного объекта репозитория, я ошибаюсь?

2. Да, я думаю, вам не хватает некоторых понятий отношения «один ко многим». Например: у пользователя есть фотографии: @OneToMany (() => Photo, photo => photo.user) фотографии: Photo [] означает, что в вашей таблице фотографий есть идентификатор пользователя, и этого достаточно. Здесь вам не нужен @Column(). См. Документы