Я новичок в этой технологии, и я работаю над проектом, в котором используется сценарий удара.
Схема таблицы:
tbl.Product
idнаименование товараbrand_id [FK]
tbl.Brand
idBrandName
в этом, при отправке я сначала добавляю BrandName и беру недавно добавленный идентификатор записи бренда и вставляю полную запись в таблицу продуктов с brand_id.
Submit(){
this.saveBrand.emit(brand);
product.brand_id = brands.id;
this.saveProduct.emit(product);
}
для этого яиспользуя NgRx Store.
Brand.effects.ts
addBrand$: Observable<Action> = this.actions$
.pipe(ofType<Add>(BrandActionTypes.Add),
switchMap(action => this.BrandService.addBrand(action.payload)),
map((Brand: any) => new AddSuccess(Brand)),
catchError(err => {
toastr.error(`Could not add Brand.`);
console.error(err);
return of(new AddFail(err));
})
);
Product.effects.ts
addProduct$: Observable<Action> = this.actions$
.pipe(ofType<Add>(ProductActionTypes.Add),
switchMap(action => this.ProductService.addProduct(action.payload)),
map((Product: any) => new AddSuccess(Product)),
catchError(err => {
toastr.error(`Could not add Product.`);
console.error(err);
return of(new AddFail(err));
})
);
при одновременном выполнении обоих этих событий (оба не асинхронны).поэтому товар не получает brand_id.я ожидаю выходной как.
Submit(){
this.saveBrand.emit(brand);
product.brand_id = brands.id;
this.saveProduct.emit(product); \\hold until brand get added
}