ACSD-53148: Twee parallelle verzoeken in GraphQL om hetzelfde configureerbare product toe te voegen
De ACSD-53148-patch verhelpt het probleem dat twee parallelle aanvragen in GraphQL voor het toevoegen van hetzelfde configureerbare product aan het winkelwagentje resulteerden in twee afzonderlijke items op het winkelwagentje met hetzelfde product-SKU. Deze patch is beschikbaar wanneer Quality Patches Tool (QPT)1.1.37 wordt geïnstalleerd. De patch-id is ACSD-53148. Het probleem wordt volgens de planning opgelost in Adobe Commerce 2.4.7.
Betrokken producten en versies
het flard wordt gecreeerd voor de versie van Adobe Commerce:
- Adobe Commerce (alle implementatiemethoden) 2.4.5-p2
Compatibel met de versies van Adobe Commerce:
- Adobe Commerce (alle implementatiemethoden) 2.4.4 - 2.4.6-p2
magento/quality-patches
-pakket bij naar de meest recente versie en controleert u de compatibiliteit op de Quality Patches Tool : zoek naar patches op de pagina. Gebruik de patch-id als een zoekwoord om de patch te zoeken.Probleem
Twee parallelle verzoeken in GraphQL om hetzelfde configureerbare product aan het winkelwagentje toe te voegen, resulteerden in twee afzonderlijke artikelen op het winkelwagentje met hetzelfde product-SKU.
Stappen om te reproduceren:
-
Creeer een configureerbaar product met SKU Test en een eenvoudig product met SKU test-A.
-
Maak een nieuw leeg winkelwagentje via GraphQL (wijzig de locatie met uw eigen URL ):
code language-graphql curl --location 'http://mag.local/graphql' \ --header 'Store: default' \ --header 'Content-Type: application/json' \ --data '{"query":"mutation{\n createEmptyCart\n}","variables"{}}'
-
Looppas twee gezamenlijke verzoeken om het zelfde product aan de kar (verandering cartID en plaats voor beide verzoeken) toe te voegen:
code language-graphql curl --location 'http://mag.local/graphql' --header 'Store: default' --header 'Content-Type: application/json' --data '{"query":"mutation($cartId: String!, $preSku: String!, $preParentSku: String!) {\r\n addConfigurableProductsToCart(\r\n input: {\r\n cart_id: $cartId\r\n cart_items: [\r\n {\r\n parent_sku: $preParentSku\r\n data: {\r\n quantity: 1\r\n sku: $preSku\r\n }\r\n }\r\n ]\r\n }\r\n ) {\r\n cart {\r\n items {\r\n id\r\n product {\r\n name\r\n sku\r\n }\r\n quantity\r\n \r\n prices {\r\n price {\r\n value\r\n currency\r\n }\r\n }\r\n ... on ConfigurableCartItem {\r\n configurable_options {\r\n option_label\r\n value_label\r\n }\r\n }\r\n }\r\n total_quantity\r\n prices {\r\n grand_total {\r\n value\r\n currency\r\n }\r\n discounts {\r\n amount {\r\n value\r\n currency\r\n }\r\n label\r\n }\r\n subtotal_excluding_tax {\r\n value\r\n currency\r\n }\r\n } \r\n }\r\n }\r\n}","variables":{"cartId":"VV85vRfmCrRm0aKLKkNDrXH2S5y7sSpf","preParentSku":"Test","preSku":"Test-A"}}' & curl --location 'http://mag.local/graphql' --header 'Store: default' --header 'Content-Type: application/json' --data '{"query":"mutation($cartId: String!, $preSku: String!, $preParentSku: String!) {\r\n addConfigurableProductsToCart(\r\n input: {\r\n cart_id: $cartId\r\n cart_items: [\r\n {\r\n parent_sku: $preParentSku\r\n data: {\r\n quantity: 1\r\n sku: $preSku\r\n }\r\n }\r\n ]\r\n }\r\n ) {\r\n cart {\r\n items {\r\n id\r\n product {\r\n name\r\n sku\r\n }\r\n quantity\r\n \r\n prices {\r\n price {\r\n value\r\n currency\r\n }\r\n }\r\n ... on ConfigurableCartItem {\r\n configurable_options {\r\n option_label\r\n value_label\r\n }\r\n }\r\n }\r\n total_quantity\r\n prices {\r\n grand_total {\r\n value\r\n currency\r\n }\r\n discounts {\r\n amount {\r\n value\r\n currency\r\n }\r\n label\r\n }\r\n subtotal_excluding_tax {\r\n value\r\n currency\r\n }\r\n } \r\n }\r\n }\r\n}","variables":{"cartId":"VV85vRfmCrRm0aKLKkNDrXH2S5y7sSpf","preParentSku":"Test","preSku":"Test-A"}}'
-
Krijg de wagentje om de punten (verandering cartId en plaats) te zien:
code language-graphql curl --location 'http://mag.local/graphql' \ --header 'Store: default' \ --header 'Content-Type: application/json' \ --data '{"query":"{\n cart(cart_id: \"VV85vRfmCrRm0aKLKkNDrXH2S5y7sSpf\") {\n items {\n id\n product {\n name\n sku\n }\n quantity\n }\n\n }\n}\n","variables":{}}'
Verwachte resultaten :
Item eenmaal vermeld met qty = 2.
{"data":{"cart":{"items":[{"id":"5","product":{"name":"config1","sku":"config1"},"quantity":2}]}}}%
Ware resultaten :
Item tweemaal vermeld met qty = 1.
{"data":{"cart":{"items":[{"id":"1","product":
{"name":"config1","sku":"config1"},"quantity":1},
{"id":"3","product":{"name":"config1","sku":"config1"},"quantity":1}]}}}%
De patch toepassen
Om individuele flarden toe te passen, gebruik de volgende verbindingen afhankelijk van uw plaatsingsmethode:
- Adobe Commerce of Magento Open Source op locatie: Quality Patches Tool > Gebruikin de handleiding Quality Patches Tool .
- Adobe Commerce op wolkeninfrastructuur: Verbeteringen en Patches > Pas Patchesin Commerce op de gids van de Infrastructuur van de Wolk toe.
Gerelateerde lezing
Meer informatie over Quality Patches Tool vindt u in:
- Quality Patches Tool vrijgegeven: een nieuw hulpmiddel om kwaliteitspatchesin de steunkennisbasis zelf-te dienen.
- Controle als het flard voor uw kwestie van Adobe Commerce beschikbaar is gebruikend Quality Patches Tool in de Quality Patches Tool gids.
Voor informatie over andere flarden beschikbaar in QPT, verwijs naar Quality Patches Tool: Onderzoek naar flardenin de Quality Patches Tool gids.