単一のトランザクションで突然変異操作全体を実行するGraphQLサービスを提供したいと思います。単一トランザクションでのGraphQL突然変異操作
トップレベルのフィールドは、1つのトランザクションで順次処理され、それに応じてデータベースが変更されます。実行中にエラーが発生していない場合にのみ、変更をデータベースにコミットする必要があります。変更しない場合は、すべてロールバックする必要があります。
今、私は2つの質問があります。GraphQL仕様によると、トップレベルフィールドのシリアル実行は、各トップレベルのフィールドは、その前に、その変更後の状態を反映した値で記入されることを意味
を後のフィールドでエラーが発生した場合に認識されます。後のトップレベルのフィールドでトランザクションをロールバックするエラーが発生した場合、これはフィールドの実際の値ではありませんか?
トップレベルフィールドの突然変異が失敗した場合、トランザクションは今後の処理を妨げ、すべての変更がロールバックされるため、次のトップレベルフィールドを実行する意味がありません。 GraphQLセマンティックによれば、これらのフィールドの実行をスキップすることはできますか(nullを返し、おそらくエラーリストにエントリする)?
それはすべて、urバックエンドの実装に依存しますが、GraphQLとは関係ありません。 GraphQLは、バックエンドとやりとりするためのインターフェイスに過ぎません。 – Mox
はい、大丈夫ですが、それはまた、ベストプラクティス/ APIユーザーの期待の問題です。 – Leisetreter