Hey SaM! @MosDev
Da bin ich wieder! Wie war dein New Year? Hoffe gut… 
Deine App, die es Kunden ermöglicht, Produkte auf der Produkt-Detailseite (PDP) zu individualisieren, wird eine tolle Sache! Hast du schon ein Name oder Branding für die App? 2024 wird ein spannendes Jahr!
Die Sorge hinsichtlich der Handhabung gleichzeitiger Anpassungen durch verschiedene Nutzer ist auch berechtigt. Deine Idee, einen Bild-Upload, Text und Bemerkungen als Inputs auf der PDP zu integrieren und dann per AJAX an den Node-Server zu senden, könnte gehen und es deinen User ermöglichen eine seamless UX zu geniessen ohne die Notwendigkeit, die Seite neu laden zu müssen, was ja keine gute UX ist, aus versch. Gründen.
Das Aktualisieren der Metafields eines Produkts erlaubt das Speichern zusätzlicher Informationen. Ob du für jede Customization ein neues Metafield erstellen solltest oder nicht, hängt aber von deinem genauen Use-Case ab. Wenn beispielsweise die Customizations nur temporär sind und für den aktuellen Einkauf relevant, könnte es besser sein, sie separat und nicht direkt als Metafield des Produkts zu speichern.
Dann die Customization-Daten in einer SQLite-Datenbank mit der Cart-Session-ID zu verknüpfen, scheint ein guter Weg zu sein, um die Daten für jeden Benutzer individuell zu halten. So vermeidest du beispielsweise das Problem, dass die letzte Mutation die vorherigen überschreibt.
Der schwierigste Teil scheint die Übernahme der Metafields in den Warenkorb und Checkout zu sein. Eine Möglichkeit könnte sein, die Customization-Daten in der Datenbank zu speichern und dann beim Checkout eine Verbindung zwischen diesen Daten und der jeweiligen Bestellung herzustellen. Du könntest auch überlegen, ob es sinnvoller ist, die Customization-Informationen als Teil des Line-Item-Objekts im Warenkorb zu speichern, anstatt sie als Metafields an Produkten anzuhängen. Dies könnte es einfacher machen, die Individualisierungen mit den Bestellungen zu verknüpfen.
Ab der API-Version 2023-04 wurden Metafelder für die Warenkorbrssource eingeführt. Diese Erweiterung bietet neue Möglichkeiten für die Speicherung von benutzerdefinierten Daten auf Warenkorbebene (siehe in der Dev Doku die neue CartTransform Funktion). Allerdings gibt es noch Unsicherheiten darüber, wie diese Metafelder in Shopify-Funktionsinputs integriert werden können.
Es gibt auch eine Diskussionen über die Möglichkeit, Metafelder, die im Warenkorb gesetzt wurden, automatisch in Bestellungen zu übernehmen, wenn diese aufgegeben werden. Dies könnte angeblich durch die Verwendung von Webhooks oder durch direktes Speichern der Metafeldwerte in der Bestellung selbst erreicht werden.
Es könnte also sinnvoll sein, die Metafelder auf Warenkorbebene zu nutzen, um die Anpassungen zu speichern und sicherzustellen, dass sie mit der Bestellung verknüpft werden.