У меня есть отношение многих ко многим между моими продуктами и категориями, например:
@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
Что я делаю неправильно?? Я не могу найти никаких подсказок.
Вам нужно определить конкретную таблицу соединений? У нас была ошибка в typeorm с псевдонимом forgein Id в enitiy, что приводило к всевозможным ошибкам. Я не совсем то же самое, но стоит попробовать
@Jboucly не помогает.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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