Отношение «многие ко многим» в NestJS TypeORM — пользовательские имена для результирующей таблицы?

#nestjs #typeorm

Вопрос:

У меня есть таблица пользователей и продуктов, многие из которых связаны со многими:

 @Entity('User')
  export class User {
  ...
    @ManyToMany(() => Product)
    @JoinTable({ name: 'UserProduct' })
    Products: Product[];
}
 

что, как и ожидалось, приводит к сгенерированной таблице UserProduct с 2 столбцами: идентификатор пользователя, ProductID — как мне их назвать, чтобы они соответствовали моим соглашениям? т. Е. Идентификатор пользователя, ProductID

Ответ №1:

Вы смотрели документы TypeORM для @JoinTable? Похоже, что они позволяют вам переопределить стандартное соглашение об именовании с использованием ваших конкретных требований к именованию столбцов joinColumn .

Я думаю, ты хочешь чего-то подобного:

 @JoinTable({
    name: "UserProduct",
    joinColumn: {
        name: "UserId",
        referencedColumnName: "id"
    },
    inverseJoinColumn: {
        name: "ProductId",
        referencedColumnName: "id"
    }
})
 

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

1. Спасибо! Я нашел способ переопределить с помощью JoinColumn, но не с помощью JoinTable — это отлично работает