Запрос таблицы соединений отношения "многие ко многим"

У меня есть отношение многих ко многим между моими продуктами и категориями, например:

@Entity('products')
export class productsEntity extends BaseEntity{
    @PrimaryGeneratedColumn()
    id: number;

//..other columns

    @ManyToMany( type => categoryEntity, category => category.products, {eager: true,})
    @JoinTable({name:"products_categories",
                joinColumn: {name: 'productId', referencedColumnName: 'id'},
                inverseJoinColumn: {name: 'categoryId', referencedColumnName:'id'}
              })
    categories: categoryEntity[];
}

Тогда у меня есть сущность категории:

@Entity('categories')
export class categoryEntity extends BaseEntity{
    @PrimaryGeneratedColumn()
    id: number;

    @Column({nullable: false, default: 'all', unique: true})
    title: string;
    
    @ManyToMany(()=> productsEntity, product => product.categories)
    products: productsEntity[];
}

Я пытаюсь сохранить новый товар, если категория существует в категории Entity. по этому коду:

 async addProduct(productDetails: productsEntity, username, categor: categoryEntity){
        const {title, description, price, units}  = productDetails;
        try{ 
            let newProduct = new productsEntity();
            newProduct.title = title;
            newProduct.description = description;
            newProduct.price = price;
            newProduct.units = units;
            newProduct.soldBy = username;
            newProduct.categories = newProduct?.categories ?? [];
            newProduct.categories.push(categor);
            categor.products= categor?.products?? [];
            categor.products.push(newProduct);
            await newProduct.save();
            await categor.save();
            
        }
        catch(err){
            this.logger.error(err.message);
            throw new HttpException('Failed adding Product.', HttpStatus.INTERNAL_SERVER_ERROR)
        }
    }

Теперь вроде все в порядке, кроме одной проблемы:

 productId | categoryId
-----------+------------
         8 |          2
        24 |          1

Он обновляется вместо того, чтобы создавать новую строку для нового продукта, если я добавляю с существующим идентификатором. как это

 productId | categoryId
-----------+------------
         8 |          2
        25 |          1

Что я делаю неправильно?? Я не могу найти никаких подсказок.

Когда вы делаете сохранение, он вставляет, если строка не существует, если она существует, она обновляет ее. Попробуйте newProduct.insert ()

Jboucly 09.04.2021 11:48

Вам нужно определить конкретную таблицу соединений? У нас была ошибка в typeorm с псевдонимом forgein Id в enitiy, что приводило к всевозможным ошибкам. Я не совсем то же самое, но стоит попробовать

Funonly 09.04.2021 12:20

@Jboucly не помогает.

Noob 09.04.2021 13:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
14
0

Другие вопросы по теме