2017-05-12 7 views
3

私は2つのテーブルがあります.1つは製品を含み、もう1つは価格が含まれています。Apollo/React 2つの関連テーブルを変異させる

Graphqlでは、クエリは次のようになります。

option { 
    id 
    price { 
     id 
     optionID 
     price 
     date 
    } 
    description 
} 

は、私は、彼らは同時に、製品の詳細と価格を入力することができ、単一の形(リアクトで)をユーザに提示します。

フォームを送信するときに、私は "製品"テーブルにエントリを作成し、次に "価格"テーブルに関連するエントリを作成する必要があります。

私はGraphqlを非常に新しく考えています。そのことについては非常に熟知しており、熟練した学習曲線を見出しており、Apolloのチュートリアルや読書の文書を読んでいますが、これまでの解決策はまだ残っていません。

誰かが私を悲惨さから救い、私に指示するか、この方向に必要な突然変異を扱う最も簡単な例を教えてもらえますか?

+0

サーバーの実装またはクライアント側の実装に問題がありますか。たとえば、成功したサーバーの応答でUIのDBテーブルまたはテーブルを更新する際に問題が発生している場合などです。 –

答えて

2

短いストーリーは、できるだけ少ないリクエストを最適化したい場合は、サーバーによって実際に処理されるべきものです。

問題:問題はあなたが依存していることです。最初に製品を作成してからその製品のIDで新しい価格に関連付ける必要があります。

解決方法:これをサーバーに実装する最善の方法は、同じ入力要求でPriceの詳細を入力できるように、突然変異入力のProductに別のフィールドを追加することです。これはScapholdの"nested create"と呼ばれています。例えば

// Mutation 
mutation CreateProduct ($input: CreateProductInput!) { 
    createProduct(input: $input) { 
    changedProduct { 
     id 
     name 
     price { 
     id 
     amount 
     } 
    } 
    } 
} 

// Variables 
{ 
    input: { 
    name: "My First Product", 
    price: { 
     amount: 1000 
    } 
    } 
} 

その後、サーバー上で、あなたのリゾルバの引数で価格オブジェクトを解析し、製品を作成しながら、新しい価格オブジェクトを作成することができます。一方で、サーバー上で一度に関連付けることもできます。

希望すると便利です。

+0

返信いただきありがとうございます、私は自分のコードにそれを試してみます。 – Bigus

関連する問題